一、搞清楚什么是微服务架构、分布式架构、集群架构
1、分布式架构和集群架构的区别
http://www.520608.com/fen-bu-shi-jia-gou-he-ji-qun-jia-gou-de-qu-bie/ 2、分布式和微服务的区别?
https://zhuanlan.zhihu.com/p/138645236

(1)分布式将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。
(2)微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
(3)分布式是否属于微服务?答案是肯定的。微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。
(4)分布式和微服务的区别
分布式:分散压力。不同模块部署在不同服务器上,分布式解决网站高并发带来问题。
微服务:分散能力。
集群:相同的服务,多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
3、SOA架构和微服务架构的区别

https://www.zhihu.com/question/42061683?sort=created
微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想

二、微服务架构需要什么
1、Zookeeper
(1)ZooKeeper是一个分布式的,开源的分布式应用程序协调服务。现在比较流行的微服务框架Dubbo、Spring Cloud都可以使用Zookeeper作为服务发现与注册中心。
https://zhuanlan.zhihu.com/p/102762433 微服务为什么一定要 Zookeeper 呢?
Zookeeper入门看这篇就够了
(2)zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能,我们这里拿比较简单的分布式应用配置管理为例来说明。假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到系统中。
2、注册中心
https://www.lagou.com/lgeduarticle/126511.html 谈一谈我所理解的微服务中的注册中心
在微服务中首先需要面对的问题就是不同的服务之间如何进行通信呢?在单体服务中如果不同的服务之间需要通信,一般就是服务将接口暴露,然后其他的服务通过http进行请求,那么很明显在微服务中也可以这样。但这里存在的问题在于单体服务中我们需要请求的目标是我们在请求的url中直接写死的,因为服务不多可以这样。而微服务中需要考虑的是存在大量服务时手动维护服务列表是否合适?如果服务横向扩展时如何通知其他的服务?服务宕机后,如何及时下线等等问题。注册中心的存在是为了更好更方便的管理应用中的每一个服务,是各个分布式节点之间的纽带。