From f402653b695695d374fd42a4bc5935326b4e3bcb Mon Sep 17 00:00:00 2001 From: Jimmy song Date: Tue, 3 Mar 2020 10:55:33 +0800 Subject: [PATCH] Add MOSN --- README.md | 9 ++- SUMMARY.md | 1 + book.json | 2 +- cloud-native/the-future-of-cloud-native.md | 12 ++-- usecases/mosn.md | 76 ++++++++++++++++++++++ 5 files changed, 88 insertions(+), 12 deletions(-) create mode 100644 usecases/mosn.md diff --git a/README.md b/README.md index 5a61310bd..922d7d6e5 100644 --- a/README.md +++ b/README.md @@ -78,9 +78,8 @@ ## 社区&读者交流 -- **云原生社区**:添加 *jimmysongio* 微信,备注姓名-公司/学校/组织/机构等,并注明加入云原生社区。 -- **知乎专栏**:[云原生应用架构](https://zhuanlan.zhihu.com/cloud-native) -- **与我联系**: +- [云原生社区](https://jimmysong.io/contact/):备注姓名-公司/学校/组织/机构等,并注明加入云原生社区。 +- [云原生应用架构](https://zhuanlan.zhihu.com/cloud-native):知乎专栏 ## 云原生出版物 @@ -94,8 +93,8 @@ ## 推荐 -- 快速入门学习 Kubernetes,请阅读[极客时间专栏《深入剖析 Kubernetes》](https://tva1.sinaimg.cn/large/006y8mN6ly1g7vf4p12rpj30u01hdjwp.jpg) -- 学习 Service Mesh,请加入 [ServiceMesher 社区](https://www.servicemesher.com) +- [极客时间专栏《深入剖析 Kubernetes》](https://tva1.sinaimg.cn/large/006y8mN6ly1g7vf4p12rpj30u01hdjwp.jpg):快速入门学习 Kubernetes +- [深入浅出云计算](https://time.geekbang.org/column/intro/292?code=EhFrzVKvIro8U06UyaeLCCdmbpk7g010iXprzDxW17I%3D&utm_term=SPoster):云原生时代给开发者和架构师的云计算指南 ## 支持本书 diff --git a/SUMMARY.md b/SUMMARY.md index baccbbb66..ee3dadd14 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -220,6 +220,7 @@ * [Envoy的架构与基本术语](usecases/envoy-terminology.md) * [Envoy作为前端代理](usecases/envoy-front-proxy.md) * [Envoy mesh教程](usecases/envoy-mesh-in-kubernetes-tutorial.md) + * [MOSN](usecases/mosn.md) * [大数据](usecases/big-data.md) * [Spark standalone on Kubernetes](usecases/spark-standalone-on-kubernetes.md) * [运行支持Kubernetes原生调度的Spark程序](usecases/running-spark-with-kubernetes-native-scheduler.md) diff --git a/book.json b/book.json index ccc12b616..620affb47 100644 --- a/book.json +++ b/book.json @@ -50,7 +50,7 @@ "size": "small" }, "tbfed-pagefooter": { - "copyright": "

快速入门 Kubernetes,就看极客时间专栏《深入剖析 Kubernetes》 | 点击关注【云原生应用架构】公众号回复【加群】加入云原生社区

Copyright © 2017-2020 | Distributed under CC BY 4.0 | jimmysong.io", + "copyright": "

给开发者和架构师的云计算指南 - 极客时间专栏《深入浅出云计算》 | 加入云原生社区

Copyright © 2017-2020 | Distributed under CC BY 4.0 | jimmysong.io", "modify_label": " Updated at ", "modify_format": "YYYY-MM-DD HH:mm:ss" }, diff --git a/cloud-native/the-future-of-cloud-native.md b/cloud-native/the-future-of-cloud-native.md index 7b411efb8..da569af3b 100644 --- a/cloud-native/the-future-of-cloud-native.md +++ b/cloud-native/the-future-of-cloud-native.md @@ -13,13 +13,15 @@ - DevOps:开发与运维之间的协同,上升到一种文化的层次,能够让应用快速的部署和发布 - 微服务:这是应用开发的一种理念,将单体应用拆分为微服务才能更好的实现云原生,才能独立的部署、扩展和更新 -一句话解释什么是云原生应用:云原生应用就是为了在云上运行而开发的应用 +一句话解释什么是云原生应用:云原生应用就是为了在云上运行而开发的应用。 + +## Kubernetes:云原生操作系统 ![Kubernetes 云原生的操作系统](../images/00704eQkgy1frr4z08j6oj31p20w2n6n.jpg) 要运行这样的应用必须有一个操作系统,就像我们运行PC或手机应用一样,而Kubernetes就是一个这样的操作系统。 -我们再来看下操作系统宝库哪些层次。 +我们再来看下操作系统包括哪些层次。 ![操作系统层次](../images/00704eQkgy1frr52hl4eaj31qy15en74.jpg) @@ -157,8 +159,6 @@ Pilot和控制平面是为了运维人员准备的。 Isito在每个上下游服务之间部署一个Envoy,Envoy中有几个基本的服务发现服务,监听器即Envoy要转发的流量端口,Endpoint是要转发的目的地,Cluster是一系列Endpoint用来做负载均衡,Route是定义各种路由规则,每个Envoy进程里可以设置多个Listener。 -![Envoy proxy架构图](../images/00704eQkgy1frr5gloob0j31vi18017p.jpg) +![Envoy proxy架构图](../images/envoy-arch.png) ---- - -本文根据 [Jimmy Song](https://jimmysong.io) 于2018年5月20日在[第四届南京全球技术周](http://njsd-china.org/)上【互联网技术专场】上的题为【云原生应用的下一站】的演讲的部分内容的文字整理而成。 +本文根据 [Jimmy Song](https://jimmysong.io) 于2018年5月20日在[第四届南京全球技术周](https://www.bagevent.com/event/1233659)上【互联网技术专场】上的题为【云原生应用的下一站】的演讲的部分内容的文字整理而成。 diff --git a/usecases/mosn.md b/usecases/mosn.md new file mode 100644 index 000000000..9a6549000 --- /dev/null +++ b/usecases/mosn.md @@ -0,0 +1,76 @@ +# MOSN + +MOSN 是蚂蚁金服开源的,使用 Go 语言开发的网络代理软件,作为云原生的网络数据平面,旨在为服务提供多协议,模块化,智能化,安全的代理能力。MOSN 是 Modular Open Smart Network-proxy 的简称。MOSN 可以与任何支持 xDS API 的 Service Mesh 集成,亦可以作为独立的四、七层负载均衡,API Gateway,云原生 Ingress 等使用。 + +- MOSN 开源地址: + +- MOSN 官网: + +## 特点 + +MOSN 作为一款开源的网络代理,具有以下核心功能: + +- 通过 xDS API 对接 Service Mesh,支持全动态资源配置运行 +- 支持 TCP 代理、HTTP 协议、多种 RPC 代理能力 +- 支持丰富的路由特性 +- 支持可靠后端管理,负载均衡能力 +- 支持网络层、协议层的可观察性 +- 支持多种协议基于 TLS 运行,支持 mTLS +- 支持丰富的扩展能力,提供高度自定义扩展能力 +- 支持无损平滑升级 + +## 核心能力 + +- Istio集成 + - 集成 Istio 1.0 版本与 V4 API,可基于全动态资源配置运行 +- 核心转发 + - 自包含的网络服务器 + - 支持 TCP 代理 + - 支持 TProxy 模式 +- 多协议 + - 支持 HTTP/1.1,HTTP/2 + - 支持 SOFARPC + - 支持 Dubbo 协议 + - 支持 Tars 协议 +- 核心路由 + - 支持 Virtual Host 路由 + - 支持 Headers/URL/Prefix 路由 + - 支持基于 Host Metadata 的 Subset 路由 + - 支持重试 +- 后端管理&负载均衡 + - 支持连接池 + - 支持熔断 + - 支持后端主动健康检查 + - 支持 Random/RR 等负载策略 + - 支持基于 Host Metadata 的 Subset 负载策略 +- 可观察性 + - 观察网络数据 + - 观察协议数据 +- TLS + - 支持 HTTP/1.1 on TLS + - 支持 HTTP/2.0 on TLS + - 支持 SOFARPC on TLS +- 进程管理 + - 支持平滑 reload + - 支持平滑升级 +- 扩展能力 + - 支持自定义私有协议 + - 支持在 TCP IO 层,协议层面加入自定义扩展 + +## 为什么要使用 MOSN 替换 Istio 的数据面? + +我们在进行Mesh改造前,已经预料到作为下一代蚂蚁金服的基础架构,Mesh 化势必带来革命性的变革以及演进成本,我们有非常宏大的蓝图:准备将原有的网络和中间件方面的各种能力重新沉淀和打磨,打造成为未来新一代架构的底层平台,承载各种服务通讯的职责。 + +这是一个需要多年时间打造,满足未来五年乃至十年需求的长期规划项目,合作共建团队跨业务,SRE,中间件,基础架构等部门。我们必须有一个具备灵活扩展,高性能,满足长期演进的网络代理转发平面。Nginx、Envoy 在研发效率、灵活扩展等方面均有不满足的地方,同时在整个 Mesh 改造涉及到非常多的部门和研发人员,必须考虑到跨团队合作的落地成本,所以我们基于 Golang 自研了云原生场景下的新型网络代理 MOSN。对于 Golang 的性能,我们前期也做了充分的调研和测试,满足蚂蚁金服业务对性能的要求。 + +## MOSN 与 Envoy 不同点是什么?优势在哪里? + +**语言栈的不同** + +MOSN 使用 Go 语言编写,Go 语言在生产效率,内存安全上有比较强的保障,同时 Go 语言在云原生时代有广泛的库生态系统,性能在 Mesh 场景下被我们评估以及实践是可以接受的。所以 MOSN 对于使用 Go、Java 等语言的公司和个人的心智成本更低。 + +**核心能力的差异化** + +- MOSN 支持多协议框架,用户可以比较容易的接入私有协议,具有统一的路由框架; +- 多进程的插件机制,可以通过插件框架很方便的扩展独立 MOSN 进程的插件,做一些其他管理,旁路等的功能模块扩展; +- 具备中国密码合规的传输层国密算法支持; \ No newline at end of file