聊聊微服务
架构演变
单体架构: All in One,所有的功能模块都在一个工程里。
SOA架构: 这个架构当不当正不正,对于现在来说,有点老,甚至需要ESB,WebService之类的,基本不会使用了。
微服务架构: 微服务架构思想是马丁福勒提出的
https://martinfowler.com/articles/microservices.html
他的核心思想是这一段话:
In short, the microservice architectural style 1 is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.
简而言之,微服务架构风格1是一种将单个应用程序开发为一套小型服务的方法,每个服务都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)通信。这些服务围绕业务能力构建,并可通过全自动部署机制独立部署。这些服务的集中管理最低限度,这些服务可能用不同的编程语言编写,并使用不同的数据存储技术。
- 微服务架构是一个软件架构风格,他不是标准。
- 将一个单体架构的产品拆分成多个服务,多个服务组成了完成的产品功能。
- 每个服务是可以完全独立部署的,互不影响。
- 可以采用HTTP这种轻量级的方式实现服务之间的交互。
- 在拆分服务时,一般是按照产品的业务领域去划分不同的服务,也可以针对单个功能做成一个服务。
- 采用DevOps的方式去做自动化部署。 (后面会学)
- 支持采用不用的语言去构建一个完整的产品。
微服务架构:是架构思想。
微服务:拆分出来的微小的服务,比如上图中的商品服务就是一个微服务。
微服务框架:对微服务的架构思想落地的一些技术。
SpringCloud生态
官方地址: https://spring.io/projects/spring-cloud
咱们要学习SpringCloud生态里的几个技术:
- SpringCloud Alibaba: Nacos
- SpringCloud:OpenFeign
- SpringCloud Alibaba:Sentinel
- SpringCloud:Gateway
- 链路追踪:Sleuth + Zipkin - SkyWalking(不玩)
Ps:这里只关注应用,底层源码之类的内容,这里不涉及。