这是我参与「第五届青训营 」伴学笔记创作活动的第8天
1、微服务概述:
1.1、什么是微服务?
微服务架构风格是一种将单体应用开发为一套小型服务的方法,
每个服务都在自己的进程中运行,并使用轻量级的通信机制(通常
是HTTP类型的API)进行通信。这些服务是围绕业务能力构建的,
并且可以通过全自动化的部署机制进行独立部署。这些服务可以
用不同的编程语言编写,也能使用不同的数据存储技术。
1.2、微服务架构的优势:
- √快:更注重敏捷开发、持续交付
- √准:服务粒度小、服务质量精准可控
- √狠:适用于互联网时代,产品迭代周期更短
1.3、微服务的困难:
分布式系统的复杂性
服务依赖管理
数据的一致性保障
测试更加艰难
对DevOps等基础设施的高要求
1.4、服务划分的三种规则:
按业务职能(Business Capability)划分。
由公司内部不同部门提供的职能。例如客户服务部门提供客户服务的职能,财务部门提供财务相关的职能。
按DDD的限界上下文(Bounded Context)划分
限界上下文是DDD中用来划分不同业务边界的元素
这里业务边界的含义是“解决不同业务问题“的问题域和对应的解决方案域
为了解决某种类型的业务问题,贴近领域知识,也就是业务。
CQRS将系统中的操作分为两类,即「命令」(Command)与「查询」(Query)。
命令则是对会引起数据发生变化操作的总称,即我们常说的新增,更新,删除这些操作,都是命令。
而查询则和字面意思一样,即不会对数据产生变化的操作,只是按照某些条件查找数据。
CQRS的核心思想是将这两类不同的操作进行分离,然后在两个独立的「服务」中实现。
这里的「服务」一般是指两个独立部署的应用。在某些特殊情况下,也可以部署在同一个应用内的不同接口上。
1.5、 微服务架构
1.6、微服务核心组件
API网关
服务通信
服务注册中心
服务治理
配置中心
服务监控