分布式系统

什么是分布式系统

单体:所有的代码在一个工程中,最多拆分模块打成jar引用或者maven拆分成代码工程模块,将不同的代码放在不同的工程代码中
分布式:分而治之思想,讲义个庞大的系统拆分成很多小的系统,甚至是很多小的服务,不同的系统之间通过接口相互调用,每个子系统有个子的数据库
微服务:将服务拆分成多个小的服务,不同服务之间进行调用

什么是CAP

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
一致性(C):分布式系统中所有的数据备份,在同一时刻是否是同样的值
可用性(A):在集群中的一部分节点故障后,集群整体是否还能响应客户短的请求
分区容错性(P):不同分区的服务之间是否能够调用(这个必须实现)
dubbo保证AP springcloud保证CP

分布式系统常见问题

  1. 框架选择:目前流行的dubbo和springcloud
  2. 分布式事务:一旦系统拆分成几个子系统,那么贯穿全局的分布式事务用该怎么处理?(TCC、最终一致性、2PC)
  3. 分布式锁:不同系统之间争抢同一资源,怎样保证资源的同步
  4. 分布式缓存:很多子系统要共用同一个缓存问题(Redis)
  5. 分布式消息:多个子系统之间传递消息要怎么做(消息中间件MQ)
  6. 分布式搜索系统:单体系统中可以在本地基于Lencene开发一个全文搜索模块,但是在分布式系统中呢?你需要在系统里引入一个外部的分布式搜索系统,比如Elasticsearch
  7. 其他问题:比如说分布式配置中心、分布式日志中心、分布式监控告警中心、分布式会话,等等,都是分布式系统场景下你需要使用和了解的一些技术。
  8. 系统部署问题:子系统过多,怎么部署
posted @ 2019-11-28 16:26  luck-monkey  阅读(227)  评论(0编辑  收藏  举报