相关资料整理,更新中…

目录

1. 精选文章

2. Kubernetes

kubernetes-diagram-902x416.png
kubernetes-diagram-902x416.png

Kubernetes 是什么? - Linux 中国 | 知乎

2.1 K8s 各组件之间的网络通信协议

2.2 K8s 架构图

参考 Kubernetes 设计架构 | kubernetes 中文社区

3. 微服务

3.1 微服务简介

3.2 微服务架构

参考资料:

大部分公司在使用的微服务技术架构体系示意图:

一、核心模块

微服务基础架构的核心模块包括:

  • 服务框架
  • 运行时支撑服务
  • 后台服务
  • 服务安全
  • 服务容错
  • 服务监控
  • 服务部署平台
二、技术体系

其中粉红色标注的模块是和微服务关系最密切的模块

三、服务框架选型
  • Sping Boot、Spring Cloud:可认为是一种 RESTful 框架,序列化协议采用基于文本的 JSON,通讯协议一般基于 HTTP
  • Apache Dubbo:本质上是一套基于 Java 的 RPC 框架,主要面向 Java 技术栈
  • Motan :新浪微博开源,功能与 Dubbo 类似,可以认为是一个轻量裁剪版的 Dubbo
四、运行时支撑服务选型

待更新…

3.3 参考文章

4. Service Mesh

参见 深入解读 Service Mesh 背后的技术细节 - 刘超 | ServiceMesher

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 的原理与应用

Service Mesh 由两个核心模块组成,SideCarControl 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 参考文章

5. 编排调度

5.1 Apache Mesos

Mesos 基于 master/slave 架构,框架决定如何利用资源,master 负责管理机器,slave 会定期的将机器情况报告给 master,master再将信息给框架。

5.2 K8s

可参考 Kubernetes 设计架构 | kubernetes 中文社区

5.3 服务雪崩、降级与熔断

6. 企业分享

7. 企业案例

7.1 网易云轻舟微服务

官网地址:轻舟微服务 | 网易云

一、产品介绍

轻舟微服务是围绕应用和微服务打造的一站式 PaaS 平台,帮助用户快速实现易接入、易运维微服务解决方案。为致力于数字化转型的企业提供中台服务治理,帮助企业实现建立生态统一标准,优化管理能力及自动化能力。

二、产品全景
三、产品优势

基于开源、兼容开源:

  • 全面兼容 Spring CloudDubbo 框架
  • 基于 Kubernetes 的容器调度与编排
  • 支持已有服务框架的平滑迁移

低成本、易接入:

  • 支持代码零改动接入微服务框架
  • 非侵入式探针,支持应用拓扑可视化
  • 支持统一的平台认证&权限管控

智能运维&立体化监控:

  • 实时监控,精准掌控服务健康状况
  • 服务拓扑,调用链跟踪可视化呈现
  • 多维度关联分析,预防系统级故障
四、产品功能

微服务治理框架:

  • 服务注册/发现
  • 服务治理
  • 服务鉴权
  • 动态配置管理
  • 服务拓扑

智能 API 网关:

  • API 发布管理
  • API 鉴权
  • 流量控制
  • 降级&熔断
  • API 测试

分布式事务:

  • 跨服务事务
  • 跨数据源事务
  • 混合事务
  • 事务状态监控
  • 异常事务处理

容器应用管理服务:

  • 应用部署
  • 弹性扩容
  • 高效混合云管理
  • 安全保障
  • 性能监控

DevOps:

  • 流水线管理
  • 打通应用开发工具链:代码、构建、测试、镜像构建、发布、配置、监控

AIOps:

  • 分布式调用链跟踪/查询
  • 指标异常检测
  • 告警关联分析
  • 故障根因分析

7.2 腾讯云微服务平台 TSF

官网地址:腾讯微服务平台 TSF | 腾讯云

一、产品介绍

腾讯微服务平台(Tencent Service Framework,TSF)是一个围绕应用和微服务的 PaaS 平台,提供一站式应用全生命周期管理能力数据化运营支持,提供多维度应用和服务的监控数据,助力服务性能优化。提供基于 Spring CloudService Mesh 两种微服务架构的商业化支持。

二、产品特性

拥抱开源社区:

  • 拥抱 Spring CloudIstio 开源社区,提供高可用、可扩展、灵活的微服务技术中台商业版支持
  • 支持异构系统平滑迁移到 TSF 上,降低用户迁移到微服务的时间和人力成本

应用全生命周期管理:

  • 提供从创建应用到运行应用的全生命周期管理,支持创建、部署、回滚、扩容、下线、启动和停止应用
  • 提供虚拟机容器两种部署方式,满足不同客户的使用需求

细粒度服务治理:

  • 提供服务API 级别的服务治理能力
  • 支持控制台上配置服务路由、服务限流、服务鉴权规则
  • 支持分布式配置管理

分布式事务:

  • 集成了分布式事务能力
  • 支持 TCC 模式分布式事务管理功能,解决跨数据库跨服务的事务问题

灵活运维:

  • 支持日志服务、调用链、服务依赖拓扑图
  • 支持基于监控的弹性伸缩功能
三、应用场景

构建分布式系统:

金融业务往往有严格合规性要求,用户能够将业务部署在专用宿主机的云服务器上,在资源共享的同时保证与其他用户的子机物理隔离,满足敏感业务数据保护、磁盘消磁需求

应用发布和管理:

相对于传统的应用发布需要运维人员登录到每一台服务器进行发布和部署,TSF 针对分布式系统的应用发布和管理,提供了简单易用的可视化控制台。用户通过控制台可以发布应用,包括创建、部署、启动应用,也支持查看应用的部署状态。除此之外,用户可以通过控制台管理应用,包括回滚应用、扩容、缩容和删除应用

服务治理:

支持服务级别API 级别的服务治理能力,包括服务路由、服务限流、服务鉴权功能。服务路由功能支持将请求按权重路由到不同版本的服务上

7.3 华为云微服务引擎 CSE

官网地址:微服务引擎 CSE | 华为云

一、产品介绍

微服务引擎(Cloud Service Engine)提供高性能微服务框架和一站式服务注册、服务治理、动态配置分布式事务管理控制台,帮助用户实现微服务应用的快速开发高可用运维;支持 ServiceCombSpring CloudService Mesh 运行环境。

二、功能描述

微服务开发框架:

  • 打包了微服务注册、发现、通信和治理等基础能力
  • 支持 RESTRPC 协议

微服务治理中心:

  • 提供微服务负载均衡、限流、降级、熔断、容错等治理能力

微服务安全管控:

  • 提供认证鉴权、黑白名单等能力保障微服务访问安全

微服务灰度发布:

  • 支持按权重接口参数(例如用户群组或用户所属区域等等)定义微服务灰度发布规则

分布式事务管理:

  • 提供最终一致性(TCC)强一致性(WSAT)事务管理框架

非侵入式接入:

  • 提供 Service Mesh 服务
  • 可实现非侵入式接入已有微服务

统一配置中心:

  • 支持微服务配置项发布、变更和通知

微服务仪表盘:

  • 提供微服务实例和接口级吞吐量、时延和成功率的实时监控仪表盘
三、应用场景

微服务应用高可用运维:

  • 低门槛:通用治理能力沉淀到框架,开发人员只需聚焦业务
  • 简单易用:提供 GUI 一站式治理控制台
  • 准实时:运行状态实时监控,配置下发实时生效

多语言微服务解决方案:

  • 多语言接入:支持 JAVA、GO、.NET、Node.js、PHP、Python 等等
  • 高性能低时延:提供高性能 REST/RPC 协议微服务框架
  • 开源开放:微服务核心框架 ServiceComb 已在 Apache 开源

开源框架微服务应用接入与管理:

  • 零成本迁移:Spring Cloud/Dubbo 应用零修改接入
  • 兼容主流开源生态:兼容 Spring Cloud 主流开源社区,与业界生态能力互通
  • 非侵入解决方案:提供商业版 Service Mesh

8. 相关论文

9. 参考资料

开源框架

  1. Apache ServiceComb - 支持多语言的一站式开源微服务解决方案
  2. go-chassis | Github
  3. go-chassis’s Documentation
  4. 使用 ServiceComb go-chassis 构建微服务 | InfoQ
  5. go-chassis/go-bmi | Github
  6. 使用 go-chassis 管理 RESTful API 文档 | 掘金
  7. ServiceComb 服务网格与微服务开发框架融合实践 - 田晓亮 | GitChat
  8. 华为开源项目 ServiceComb 快速入门 - 李达港 | IT大咖说

相关文章

  1. 推荐 30 个用于微服务的顶级工具 | 高效开发运维
  2. 《微服务:从设计到部署》 | Github