




设计原则
1, 拆分足够微
比如:当项目比较复杂的时候,就可以拆分了
2. 轻量级通信
比如使用RPC 和HTTP 协议,通信
3, 领域驱动原则
即与业务相关
4. 单一职责原则
微服务之间不能有强耦合,服务的边界要清晰
5. DevOps
每个微服务 人员都是小而精, 人员尽量都是全栈,全面
运维维护 方便
6. 不限于技术栈
总体

微服务拆分

康威定律详细介绍
Mike从他的角度归纳这篇论文中的其他一些核心观点,如下:
第一定律:Communication dictates design(组织沟通方式会通过系统设计表达出来)
第二定律:There is never enough time to do something right, but there is always enough time to do it over(时间再多一件事情也不可能做的完美,但总有时间做完一件事情)
第三定律:There is a homomorphism from the linear graph of a system to the linear graph of its design organization(线型系统和线型组织架构间有潜在的异质同态特性)
第四定律: The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems(大的系统组织总是比小系统更倾向于分解
参考 https://www.cnblogs.com/gudi/p/6685474.html
微服务挑战
1. 数据一致性(分布式事务)
11, 可靠性事件模式(消息队列)
12. 补偿模式 - sagas 模式

服务网关
和终端用户进行通信, 比如 身份认证,处理权限,安全防御, 流量控制等。
避免微服务 直接与 终端用户进行 连接 。
服务网关尽量不要 夹杂 业务逻辑



舱壁 隔离: 比如 调用的每个 微服务 来 一个线程池,这样 出故障之后就 减少了 故障的传播
服务降级: 微服务调用之间 出错:返回给最终用户空页面或者空数据
API 网关补充
好处:
1, 避免将内部信息泄露给外部
2. 为微服务添加额外的安全层
3, 支持混合通信协议
4。 降低构建微服务的复杂性
5. 微服务模拟与虚拟化
虚拟化: 比如 API网关再转发调其他API网关
弊端:
1,在架构上需要额外考虑更多编排与管理,
2. 路由逻辑配置要进行统一的管理
3. 可能引发单点故障(因为独立的入口,所以高并发或者其他情况可能出现服务不可用)
API网关的实现方式
- nginx 作为API网关
- spring cloud Zuul : 提供了 认证,鉴权,限流,动态路由,监控,弹性,安全,负载均衡,协助单点压测,静态响应等边缘服务
- Kong : api 网关的管理平台 ,底层是 nginx

实践

SOA vs 微服务


拆分原则和方法

开始微服务,服务粒度可以粗一点

环型依赖,容易死循环, 双向依赖就是高耦合了

微服务的数据一致性

2pc 即 两阶段提交

并没有回滚,只是有了 幂等 。
使用MQ 异步发消息,提高吞吐量

需要按照顺序 进行, 操作比较复杂。
spring cloud 子项目介绍
1, spring cloud config
配置中心,利用 git 来集中管理程序的配置
2, spring clound netflix
集成众多Netflix 的开源软件,包括 Eureke, Hystrix, Zuul , Archaius 等
3。 spring clound Bus

4. spring cloud cluster
基于 Zookeeper, Redis ,Hazelcast, Consul 实现的领导选举和平民状态模式的抽象和实现
5. spring cloud consul
基于 Hashicorp Consul 实现的服务发现和配置管理
6. spring cloud security
在 Zuul 代理中为 OAuth2 REST 客户端和认证头转发提供负载均衡
7. spring cloud sleuth
适用于 spring cloud 应用程序的分布式跟踪,与 Zipkin , Htrace 和 基于日志(比如 ELK)的跟踪相 兼容。
可以日志的收集
8. spring cloud data flow

spring cloud stream

spring cloud stream app starters
基于spring boot 为外部系统提供 spring 的集成

等等其他项目
以上来自慕课网
本文探讨微服务的设计原则,如拆分、轻量级通信、领域驱动、单一职责及DevOps理念,同时分析微服务面临的挑战,如数据一致性、可靠性事件模式及补偿模式。文章还介绍了API网关的作用和实现方式,以及Spring Cloud子项目的功能。

被折叠的 条评论
为什么被折叠?



