跳转至

微服务

时间:2020-12-02 10:09:09

参考:

  1. 《微服务设计》-- Sam Newman 著 崔力强、张骏译

微服务#

相对于单体服务来说,每个服务只负责一小部分业务,服务之间通过接口进行通信。

服务拆分#

把一个单体服务拆分成多个微服务。拆分策略:

  1. 划分边界,考虑业务、公司组织架构等。
  2. 服务拆分,逐步替代,先用微服务替换一个业务模块,然后从单体项目中把该模块一处,逐步用微服务替换全部服务。

故障隔离#

Hystrix#

持续集成和持续部署#

测试#

  • 单元测试:验证函数、方法是否存在问题,不需要和数据库交互。(测试用例自动测试)
  • 服务测试:验证单个服务是否存在问题,服务依赖可以使用Mock或打桩的方式替代。
  • 端到端测试:界面测试,测试整个项目的业务。

项目构建 Jekins#

自动化构建。

项目部署 Docker#

一个服务一个镜像,屏蔽环境影响,隔离不同服务。

服务编排 Kubernetes#

服务集群,依赖等。

部署策略#

  • 蓝绿部署:线上运行项目版本Va,新部署版本Vb。在Va正常运行的情况下部署版本Vb,之后对Vb进行测试,如果没问题把流量从Va导入Vb,此时保留Va,当Vb稳定之再停掉Va。

  • 金丝雀发布:向上运行项目版本Va,新部署版本Vb。再Va正常运行的情况下部署版本Vb,之后引入小部分流量到Vb,观察Vb版本是否满足上线预期,如果满足则逐步用Vb替换Va。

监控#

ElasticSearch#

logstash#

Kibana#

调用链#

Zipkin