参考:微服务入门
参考文章2:服务迁移之路 | Spring Cloud向Service Mesh转变
参考文章3:Docker&k8S&ServiceMesh与Dubbo&SpringCloud微服务框架思考
一、微服务架构
1、什么是微服务
微服务就是将原本一个臃肿的项目的所有模块拆分开,变成一个个独立的服务。每个独立的服务就是一个微服务。
2、微服务和分布式的区别
分布式是指将一个项目拆分为多个模块部署在不同的机器上。各个模块通过接口进行数据交互。
分布式也是一种微服务,其目标在于各个模块的部署环境;而微服务的目标在于模块的拆分。
3、微服务实践方式
微服务是一种项目架构方式,不借助任何技术也可实现,只是此时需要解决的问题较多。例如:负载均衡,服务的注册与发现,服务调用,路由。。。。等等等等一系列问题,而Spring-Cloud将处理这些问题的的技术全部打包好了。
Docker 和 Kubernetes 关系
K8S与SpringCloud有很多功能是重叠的,比如服务发现、配置管理、服务注册、负载均衡等等,K8S主要实现对Docker容器的编排部署和管理配置等,简单点说,把大型单体应用拆分、Docker封装后,通过 K8S 就可以对 Docker 进行生命周期的管理了。相对于SpringCloud,K8S更侧重于Ops,所以如果是考虑走DevOps路线
ServiceMesh
用 docker + K8S 和 SpringCloud 都可以实现微服务,但是他们有个共同点,就是应用层面(业务逻辑层面)与控制层面没有分离,虽然实现了微服务,但是在微服务这个实体里面程序功能与对功能的控制是合在一起的。ServiceMesh 要做的事情就是把应用层和通信层隔离,让微服务之间的通信通过一个独立层来实现,具体地说,就是通过 Sidecar 来实现,每个微服务在部署时候都对应有个Sidecar,所有Sidecar连接起来,就是服务网格。