分布式系统

微服务

总结起来微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ,Kafaka等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如Jenkins)减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。例如Eureka,Zookeeper等都是比较常见的服务集中化管理框架。

微服务的优势

1)将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
2)微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。
3)服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
4)微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。

微服务和SOA的关系

SOA即面向服务的架构,SOA是根据企业服务总线(ESB)模式来整合集成大量单一庞大的系统,微服务可以说是SOA的一种实现,将复杂的业务组件化。但它比ESB实现的SOA更加的轻便敏捷和简单。

分布式

分布式系统
分布式系统

zookeeper入门

Zookeeper是一个高性能,开源分布式应用协调的服务,保证分布式系统高效,稳定的运行。它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。
见连接:
https://blog.csdn.net/qq285016127/article/details/80271672

Zookeeper数据模型

zk的数据模型可以理解为linux的文件目录。
每一个节点称之为znode,可以有子节点,也可以有数据。
每个节点分为零时节点和永久节点,临时节点在客户端断开后消失。
每个zk节点都有各自的版本号,可以通过命令来显示节点信息。
每当节点数据发生变化,该节点的版本号会累加(乐观锁)。
删除/修改过时节点,版本号不匹配则会报错。
每个zk节点存储的数据不宜过大,几k
节点可以设置权限acl,通过权限来限制用户的访问。

见连接
https://www.jianshu.com/p/41971dbae604
https://blog.csdn.net/tomato__/article/details/78549368