相关资料整理,更新中…
目录
1. 精选文章
- 轻量级微服务架构及其最佳实践 | DevOps时代
- 为什么 kubernetes 天然适合微服务 | 网易云
- 为什么 kubernetes 天然适合微服务 | 网易云基础服务
- Kubernetes 如何打赢容器之战?| 阿里云栖社区
- 微服务杂谈 | 后端技术杂谈
- 微服务编排之道 | 掘金
- 编排的艺术:K8S 中的容器编排和应用编排 - Kuberneteschina | 知乎专栏
- 微服务核心研究之编排 | 简书
- 新浪微博混合云架构实践挑战之容器编排设计与实践 | InfoQ
- 容器 SDN 技术与微服务架构实践 | 七牛云
- 微服务架构技术栈选型手册 - 杨波 | InfoQ
- 《微服务架构核心20讲 》PPT - 杨波 | 极客时间
- 最全的微服务知识科普 | Docker
- 容器、容器云与Kubernetes技术漫谈 | K8S中文社区
- 深入解读 Service Mesh 背后的技术细节 - 刘超 | ServiceMesher
2. Kubernetes
- 为什么 kubernetes 天然适合微服务 | 网易云基础服务
- 容器平台选型的十大模式:Docker、DC/OS、K8S 谁与当先?| 网易云基础服务
- Kubernetes 如何打赢容器之战?| 阿里云栖社区
- 11 Ways (Not) to Get Hacked | kubernetes.io
- What is Kubernetes | kubernetes.io
- 2019 KubeCon + ClondNativeCon + Open Source Summit有感 | 赵化冰
- Kubernetes 架构学习笔记 | kubernetes中文社区
- kubernetes 常用命令总结 | kubernetes中文社区
- 在 Kubernetes 中,如何动态配置本地存储? | kubernetes中文社区
- 外部访问 kubernetes 的三种模式 - kubernetes 社区 | 知乎
- 从零入门 K8s:人人都能看懂 Pod 与容器设计模式 | 阿里巴巴云原生
- Kubernetes vs Docker Swarm:完整的比较指南 | 腾讯云+社区
- Kubernetes:过去、现在与未来 | 掘金
2.1 K8s 各组件之间的网络通信协议
2.2 K8s 架构图
3. 微服务
3.1 微服务简介
- 微服务杂谈 | 后端技术杂谈
- 微服务杂谈 | kubernetes中文社区
- 微服务(Microservice)那点事 | 阿里云栖社区
- 微服务实战(一):微服务架构的优势与不足 | DockOne.io
- 谈谈微服务架构中的基础设施:Service Mesh 与 Istio | 赵化冰
- 阿里P8架构师谈:微服务技术架构、监控、Docker、服务治理等体系 | 优知学院
3.2 微服务架构
参考资料:
- 微服务架构技术栈选型手册 - 杨波 | InfoQ
- 《微服务架构核心20讲 》PPT - 杨波 | 极客时间
- 微服务架构本质论 | 腾讯云+社区
- 微服务核心架构梳理 | 掘金
- 微服务架构 | cnblogs
- 一篇文章快速理解微服务架构 | dockone.io
- 微服务架构的优势与不足 | dockone.io
- 微服务(Microservice)那点事 | 阿里云栖社区
- 微服务相关文章 | 程序猿 DD
大部分公司在使用的微服务技术架构体系示意图:
一、核心模块
微服务基础架构的核心模块包括:
- 服务框架
- 运行时支撑服务
- 后台服务
- 服务安全
- 服务容错
- 服务监控
- 服务部署平台
二、技术体系
其中粉红色标注的模块是和微服务关系最密切的模块
三、服务框架选型
- Sping Boot、Spring Cloud:可认为是一种 RESTful 框架,序列化协议采用基于文本的 JSON,通讯协议一般基于 HTTP
- Apache Dubbo:本质上是一套基于 Java 的 RPC 框架,主要面向 Java 技术栈
- Motan :新浪微博开源,功能与 Dubbo 类似,可以认为是一个轻量裁剪版的 Dubbo
四、运行时支撑服务选型
待更新…
3.3 参考文章
- Re:从 0 开始的微服务架构:(一)重识微服务架构 - 苏槐 | InfoQ
- Re:从 0 开始的微服务架构:(二)如何快速体验微服务架构?- 苏槐 | InfoQ
- Re:从 0 开始的微服务架构:(三)微服务架构 API 的开发与治理 - 苏槐 | InfoQ
- Re:从 0 开始的微服务架构:(四)如何保障微服务架构下的数据一致性 - 苏槐 | InfoQ
- Re:从 0 开始的微服务架构:(五)代码给你,看如何用 Docker 支撑微服务 - 苏槐 | InfoQ
- 微服务的 4 个设计原则和 19 个解决方案 | EAWorld
- 微服务化的十个设计要点 - 刘超 | 架构师社区
- 亿级规模的高可用微服务系统,如何轻松设计?| 51CTO技术栈
- 大规模微服务单元化与高可用设计 | 刘超的通俗云计算
- 轻量级微服务架构及其最佳实践 | DevOps时代
4. Service Mesh
4.1 微服务 vs K8s
微服务设计 | Kubernetes 功能 |
---|---|
1. API 网关 | Ingress |
2. 无状态化,区分有状态化和无状态的应用 | 无状态对应 Deployment,有状态对应 StatefulSet |
3. 数据库的横向扩展 | headless service 指向 PaaS 服务,或者 StatefulSet 部署 |
4. 缓存 | headless service 指向 PaaS 服务,或者 StatefulSet 部署 |
5. 服务拆分和服务发现 | Service |
6. 服务编排与弹性伸缩 | Deployment 的 Replicas |
7. 统一配置中心 | ConfigMap |
8. 统一日志中心 | DaemonSet 部署日志 Agent |
9. 熔断、限流、降级 | Service Mesh |
10. 全方位的监控(智能管控?) | Cadvisor, DaemonSet 部署监控 Agent |
在我们微服务设计的十个要点中,我们会发现Kubernetes都能够有相应的组件和概念,提供相应的支持。
其中最后的一块拼图就是服务发现,与熔断限流降级。
众所周知,Kubernetes 的服务发现是通过Service
来实现的,服务之间的转发是通过kube-proxy
下发 iptables 规则来实现的,这个只能实现最基本的服务发现和转发能力,不能满足高并发应用下的高级的服务特性,比较 SpringCloud 和 Dubbo 有一定的差距,于是 Service Mesh 诞生了,他期望将熔断,限流,降级等特性,从应用层,下沉到基础设施层去实现,从而使得 Kubernetes 和容器全面接管微服务。
待更新…
4.2 Service Mesh 简介
一、什么是 Service Mesh
Service Mesh
中文名称为服务网格,因为它的部署图看起来就像一个网格:
图中的绿色小块可以理解为微服务应用,蓝色小块可以理解为 Service Mesh 的轻量级网络代理
简单来说:Service Mesh
就是一个基础设施层,它是用于处理微服务中服务与服务之间通信的一种技术。
有了 Service Mesh 之后,在微服务框架中,服务与服务之间的通信就是靠这些网络代理模块来保障。
二、为什么需要 Service Mesh
在传统的微服务架构中,随着业务越来越复杂,拆分的服务实例也越来越多,那么各个服务之间的依赖就变成了非常复杂的网络拓扑结构,类似下图:
在如此复杂的分布式部署架构下,微服务中服务依赖调用和数据传输所面临的问题也成倍增加,极大的提高了服务治理的难度。
同时,由于容器化技术的成熟和规模化,微服务都会采用容器化,并朝着云原生应用的方向发展。而传统的微服务架构中,虽然也有服务治理的组件,但是这些组件大多需要在应用代码里进行集成,并不符合云原生的思想。因此,急需一个标准化、能高效部署和运维的微服务体系方案。
因此,Service Mesh 就应运而生了——其目的就是用来解决微服务架构中服务间可靠调用、服务治理等问题。
三、Service Mesh 的原理与应用
Service Mesh 由两个核心模块组成,SideCar
和Control Plane
:
1. Sidecar:
Sidecar
即上面提到的与服务部署在一起的轻量级网络代理,它的作用就是实现服务框架的各项功能,这样就可以让服务 (Service A 或 B) 回归业务本质。
传统的微服务架构中,各种服务框架的功能 (例如服务发现、负载均衡、限流熔断等) 的代码逻辑或多或少都需要耦合到服务实例的代码中,给服务实例增加了很多业务无关的代码,也提升了复杂度
有了Sidecar
之后,服务节点只做业务逻辑自身的功能,服务之间的调用交给了Sidecar
,由Sidecar
去注册服务、去做服务发现、去做请求路由、去实现熔断限流、去做日志统计。
在这种新的微服务架构中,所有的Sidecar
组合在一起,就是一个服务网格了。不过,这个大型的服务网格并不是完全自治的,它还需要一个统一的控制节点,也就是Control Plane
。
2. Control Plane:
Control Plane
是用来从全局的角度控制Sidecar
的。例如它负责所有Sidecar
的注册,并存储一个统一的路由表,帮助各个Sidecar
进行负载均衡和请求调度。
此外,Control Plane
还会收集所有Sidecar
的监控信息和日志数据,相当于Service Mesh
架构的大脑。Control Plane
控制着Sidecar
来实现服务治理的各项功能。
4.3 参考文章
- 深入解读 Service Mesh 背后的技术细节 - 刘超 | ServiceMesher
- Service Mesh:重塑微服务市场 - 敖小剑 | ServiceMesher
- Istio Service Mesh 教程 - 宋净超 | ServiceMesher
- 微服务架构之「 下一代微服务 Service Mesh 」| 不止思考
5. 编排调度
- 微服务编排之道 | 掘金
- 微服务核心研究之编排 | 简书
- 编排的艺术:K8S 中的容器编排和应用编排 - Kuberneteschina | 知乎专栏
- 几种常见的微服务编排模式 | Neohope’s Blog
- kubernetes 容器编排系统介绍 | 腾讯云+社区
- 容器编排的作用和要实现的内容 | CSDN
- 从 kubernetes 看如何设计超大规模资源调度系统 | CSDN
- 编排管理成容器云关键 Kubernetes(K8s)和Swarm对比分析 | kubernetes 中文社区
- 云编排技术:探索您的选择 | IBM Developer
- Netflix Conductor: A microservices orchestrator | Medium.com
5.1 Apache Mesos
Mesos 基于 master/slave 架构,框架决定如何利用资源,master 负责管理机器,slave 会定期的将机器情况报告给 master,master再将信息给框架。
5.2 K8s
5.3 服务雪崩、降级与熔断
6. 企业分享
- 新浪微博混合云架构实践挑战之概述篇 | InfoQ
- 新浪微博混合云架构实践挑战之不可变基础设施 | InfoQ
- 新浪微博混合云架构实践挑战之镜像分发实战 | InfoQ
- 新浪微博混合云架构实践挑战之容器编排设计与实践 | InfoQ
- 新浪微博混合云,容器编排设计与实践 | 高效开发运维
- 来自京东、唯品会对微服务编排、API网关、持续集成的实践分享(上)| 开源中国
- 来自京东、宅急送对微服务编排、API网关、持续集成的实践分享(下)
- 容器 SDN 技术与微服务架构实践 | 七牛云
- 万台规模下的 SDN 控制器集群部署实践 - H3C | InfoQ
- 华为容器在K8S上的技术实践之路 - 黄毽 | InfoQ
- ArchSummit 2018 会议 PPT
- 蚂蚁金服大规模微服务架构下的 Service Mesh 探索之路 | 蚂蚁金服科技
- 爱奇艺视频后台从”单兵作战”到”团队协作”的微服务实践 | 爱奇艺技术产品团队
- Service Mesh 在有赞的实践与发展 | 有赞coder
7. 企业案例
7.1 网易云轻舟微服务
官网地址:轻舟微服务 | 网易云
一、产品介绍
轻舟微服务是围绕应用和微服务打造的一站式 PaaS 平台,帮助用户快速实现易接入、易运维的微服务解决方案。为致力于数字化转型的企业提供中台服务治理,帮助企业实现建立生态统一标准,优化管理能力及自动化能力。
二、产品全景
三、产品优势
基于开源、兼容开源:
- 全面兼容 Spring Cloud 和 Dubbo 框架
- 基于 Kubernetes 的容器调度与编排
- 支持已有服务框架的平滑迁移
低成本、易接入:
- 支持代码零改动接入微服务框架
- 非侵入式探针,支持应用拓扑可视化
- 支持统一的平台认证&权限管控
智能运维&立体化监控:
- 实时监控,精准掌控服务健康状况
- 服务拓扑,调用链跟踪可视化呈现
- 多维度关联分析,预防系统级故障
四、产品功能
微服务治理框架:
- 服务注册/发现
- 服务治理
- 服务鉴权
- 动态配置管理
- 服务拓扑
智能 API 网关:
- API 发布管理
- API 鉴权
- 流量控制
- 降级&熔断
- API 测试
分布式事务:
- 跨服务事务
- 跨数据源事务
- 混合事务
- 事务状态监控
- 异常事务处理
容器应用管理服务:
- 应用部署
- 弹性扩容
- 高效混合云管理
- 安全保障
- 性能监控
DevOps:
- 流水线管理
- 打通应用开发工具链:代码、构建、测试、镜像构建、发布、配置、监控
AIOps:
- 分布式调用链跟踪/查询
- 指标异常检测
- 告警关联分析
- 故障根因分析
7.2 腾讯云微服务平台 TSF
官网地址:腾讯微服务平台 TSF | 腾讯云
一、产品介绍
腾讯微服务平台(Tencent Service Framework,TSF)是一个围绕应用和微服务的 PaaS 平台,提供一站式应用全生命周期管理能力和数据化运营支持,提供多维度应用和服务的监控数据,助力服务性能优化。提供基于 Spring Cloud 和 Service Mesh 两种微服务架构的商业化支持。
二、产品特性
拥抱开源社区:
- 拥抱 Spring Cloud 和 Istio 开源社区,提供高可用、可扩展、灵活的微服务技术中台商业版支持
- 支持异构系统平滑迁移到 TSF 上,降低用户迁移到微服务的时间和人力成本
应用全生命周期管理:
- 提供从创建应用到运行应用的全生命周期管理,支持创建、部署、回滚、扩容、下线、启动和停止应用
- 提供虚拟机和容器两种部署方式,满足不同客户的使用需求
细粒度服务治理:
- 提供服务和 API 级别的服务治理能力
- 支持控制台上配置服务路由、服务限流、服务鉴权规则
- 支持分布式配置管理
分布式事务:
- 集成了分布式事务能力
- 支持 TCC 模式分布式事务管理功能,解决跨数据库和跨服务的事务问题
灵活运维:
- 支持日志服务、调用链、服务依赖拓扑图
- 支持基于监控的弹性伸缩功能
三、应用场景
构建分布式系统:
金融业务往往有严格合规性要求,用户能够将业务部署在专用宿主机的云服务器上,在资源共享的同时保证与其他用户的子机物理隔离,满足敏感业务数据保护、磁盘消磁需求。
应用发布和管理:
相对于传统的应用发布需要运维人员登录到每一台服务器进行发布和部署,TSF 针对分布式系统的应用发布和管理,提供了简单易用的可视化控制台。用户通过控制台可以发布应用,包括创建、部署、启动应用,也支持查看应用的部署状态。除此之外,用户可以通过控制台管理应用,包括回滚应用、扩容、缩容和删除应用。
服务治理:
支持服务级别和 API 级别的服务治理能力,包括服务路由、服务限流、服务鉴权功能。服务路由功能支持将请求按权重路由到不同版本的服务上。
7.3 华为云微服务引擎 CSE
官网地址:微服务引擎 CSE | 华为云
一、产品介绍
微服务引擎(Cloud Service Engine)提供高性能微服务框架和一站式服务注册、服务治理、动态配置和分布式事务管理控制台,帮助用户实现微服务应用的快速开发和高可用运维;支持 ServiceComb、Spring Cloud 和 Service Mesh 运行环境。
二、功能描述
微服务开发框架:
- 打包了微服务注册、发现、通信和治理等基础能力
- 支持 REST 和 RPC 协议
微服务治理中心:
- 提供微服务负载均衡、限流、降级、熔断、容错等治理能力
微服务安全管控:
- 提供认证鉴权、黑白名单等能力保障微服务访问安全
微服务灰度发布:
- 支持按权重和接口参数(例如用户群组或用户所属区域等等)定义微服务灰度发布规则
分布式事务管理:
- 提供最终一致性(TCC)和强一致性(WSAT)事务管理框架
非侵入式接入:
- 提供 Service Mesh 服务
- 可实现非侵入式接入已有微服务
统一配置中心:
- 支持微服务配置项的发布、变更和通知
微服务仪表盘:
- 提供微服务实例和接口级吞吐量、时延和成功率的实时监控仪表盘
三、应用场景
微服务应用高可用运维:
- 低门槛:通用治理能力沉淀到框架,开发人员只需聚焦业务
- 简单易用:提供 GUI 一站式治理控制台
- 准实时:运行状态实时监控,配置下发实时生效
多语言微服务解决方案:
- 多语言接入:支持 JAVA、GO、.NET、Node.js、PHP、Python 等等
- 高性能低时延:提供高性能 REST/RPC 协议微服务框架
- 开源开放:微服务核心框架 ServiceComb 已在 Apache 开源
开源框架微服务应用接入与管理:
- 零成本迁移:Spring Cloud/Dubbo 应用零修改接入
- 兼容主流开源生态:兼容 Spring Cloud 主流开源社区,与业界生态能力互通
- 非侵入解决方案:提供商业版 Service Mesh
8. 相关论文
- 软件服务的在线演化 - 国防科大计算机学院 | 计算机学报
- 需求驱动的服务动态自适应与演化方法的研究与实现 | 清华大学软件学院
- 需求驱动的微服务应用自适应演化框架研究与实现 | 浙江工业大学
- 基于容器云的微服务系统 | 联通软件研究院
- 面向 Docker 的微服务部署策略研究 | 厦门大学
- 微服务环境下容器编排可视化实践研究 | 北方工业大学
- 云计算环境下基于QoS的服务自适应演化研究 | 东华理工大学
- 基于环境感知的云服务自适应演化研究 | 东华理工大学
- 人工智能在网络编排系统中的应用 | 北京邮电大学网络与交换技术国家重点实验室