前言
承接上文 互联网架构演进之路
1、ServiceMesh架构设计 2、高可用设计手段 3、高并发设计手段
先推荐大家一个很好用的画软件设计图的工具
gitmind
此图仅仅为了展示使用gitmind画出来效果 请忽略内容
简洁、清晰、有效
正文开始
ServiceMesh架构设计
公共业务逻辑下沉
多编程语言之间 通信 问题 每种语言都要写一套基础设施 成本大 因为通讯组件和应用程序耦合在一起
业务研发团队和基础设施团队务必物理解耦
一套基础实施支持多语言开发 应用程序可以多种语言 基础设施能力从应用程序中下沉成为一个单独的进程
服务网格
1、独立进程 2、服务之间通讯 3、不管有状态服务还是无状态服务未来一定跑在云原生(docker k8s)上 4、轻量级网络代理 5、与应用程序部署在一起 对应用程序透明
服务网格架构
sidecar 是一个 rpc服务 应用程序A->sidecarA->sidecarB->应用程序B 反向同理 通讯协议两两都是tcp 数据协议 pb 不管应用程序是什么语言 只有一套sidecar就行了 服务升级不依赖业务团队 业务团队迭代速度快
为什么必须部署在一起
同一个物理机或k8s pod 基于 tcp 轻量级 不需要考虑负载均衡\重试\服务注册\配置中心\路由
最早期ServiceMesh
案例1-百度空间
用的是pull模式 百度空间 数据量大 数据一致性没那么高 是异步架构
案例2-社交IM
pc桌面版 tcp长连接 web用不了tcp长连接 http协议模拟 长轮询 类似直播 难点 抗同时并发量 同步架构 消息实时性
路由层是IM特有的 不需要关注
水平方向拆分