Skip to content

Latest commit

 

History

History
42 lines (36 loc) · 3 KB

分布式服务.md

File metadata and controls

42 lines (36 loc) · 3 KB

架构发展进程

1.JEE架构 初期jav企业版的简称,分为三个层级web,业务逻辑,数据存储
2.SSH架构 即mvc模式。视图、模型、控制器
3.服务化架构(SOA) 通过拆分每个逻辑形成服务,用企业总线来统一做入口实现业务。
4.微服务架构 通过分布式的方式把单一功能形成服务,服务运行在一个单独进程,每个服务都有多个实例在运行,可以平滑伸缩,拥有自己的数据库,缓存,消息队列等。通过http tcp/ip等方式进行通信
    微服务可以用代理、聚合、串行的方式,去调度服务,从而形成新的服务。
    微服务需要容错,进行分组,划分环境,适当性的进行小量测试。适当的情况下可以限流,设计计数器实现,统计前几秒的访问量来实行
    微服务迁移,可以设计开关,限制旧的写入,打开新的写入。从而平滑升级

分布式系统的一致性问题

1.水平拆分,即增加多节点,多节点形成服务池。垂直拆分,把功能细分,一个服务只做一件事,从而让服务聚合来实行功能
2.ACID(原子性,一致性,隔离性,持久性) 数据库的事务一致性来保证强一致性
3.CAP(帽子原理:一致性,可用性,分区容忍性) 分布式系统必定支持分区容忍性,一致性和可用性只能取其一。一致就可能不能及时返回,返回则可能造成不一致
4.BASE(基本可用,软状态一段时间不同步,最终一致性)
5.分布式一致性协议,XA协议。先锁定资源,然后统一提交。阿里巴巴提出的三段协议,在原基础上增加了询问机制,先询问但不操作。通知增加每个阶段的超时机制。

保证最终一致性

1.查询模式,每个服务器都对外提供查询执行的状态,用于做每个阶段的后续操作,二次补偿操作
2.异步定时操作。
3.定期监控系统

消息可靠性

1.数据库实现强一致
2.数据库注入消息之前,先插入预发送消息。定时询问服务是否需要发送。确认后,注入正式消息

性能评估

指标:
高性能:运行效率高、性价比高
可用性:持续可用性、宕机时间,可靠性
可伸缩性:垂直伸缩、水平伸缩
可扩展性:组件重用
安全性:数据安全、加密

压测工具

ab:apache http请求。但没法耦合操作请求
jmeter:java的性能测试工具,可做静态和动态资源数据库 http等
mysqlslap:模拟多个并发来测试mysql压力测试
syabench:cpu性能测试
dd:磁盘I/O测试 打印日志通常表现为顺序的写操作I/O,而数据库查询多为磁盘的随机I/O

框架组成

日志 m v c db 缓存 I/O文件 调用链(traceID用于记录此次唯一的操作id,SpanID和ParentSpanID来记录当前的服务id和之前的id,-1标识跟节点)