一、单体架构
	1. 单体架构的简介
	
		
			
		
	
	2. 单体架构的架构图
	
		
			
		
	
	3. 单体架构的优点
	
		
			
		
	
	4. 单体架构的缺点
	
		
			
		
	
	二、微服务架构
	1. 微服务架构的简介
	
		- 微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
 
		- 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务。
 
	
	2. 微服务架构的架构图
	
		
			
		
	
	
		
			
		
	
	3. 微服务架构的设计原则
	
	4. 微服务架构的优点
	
		- 相对于单体架构,它的主要特点是组件化、松耦合、自治、去中心化。
 
		- 一组小的服务其服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。
 
		- 独立部署运行和扩展 :每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。
 
		- 独立开发和演化:技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。
 
		- 独立团队和自治 :团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。
 
	
	5. 微服务架构的缺点
	
		- 服务拆分微服务架构可能带来过多的操作
 
		- 分布式系统可能复杂难以管理,因为分布部署跟踪问题难。
 
		- 分布式事务比较难处理
 
		- 当服务数量增加,管理复杂性增加。
 
	
	6. 微服务架构的拆分思路
	6.1 横向拆分:根据业务来拆分
	
		
			
		
	
	6.2 纵向拆分:根据层次来拆分
	
		
			
		
	
	7. 微服务架构的选择
	7.1 Dubbo(RPC)
	7.1.1 Dubbo
	
		- Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。
 
		- 协议和序列化框架都可以插拔是及其鲜明的特色。
 
		- 远程接口是基于Java Interface,并且依托于Spring框架方便开发。
 
		- 可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。
 
		- Dubbo目前是一种广泛使用的微服务架构框架。
 
	
	7.1.2 RPC
	
		- RPC,Remote Process Call ,即跨进程调用
 
		- RPC的本质是提供了一种轻量无感知的跨进程通信的方式,在分布式机器上调用其他方法与本地调用无异(远程调用的过程是透明的,你并不知道这个调用的方法是部署在哪里,通过PRC能够解耦服务)
 
		- RPC是根据语言的API来定义的,而不是基于网络的应用来定义的,调用更方便,协议私密更安全、内容更小效率更高。
 
	
	
		
			
		
	
	
		- 客户端(Client),服务的调用方。
 
		- 服务端(Server),真正的服务提供者。
 
		- 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
 
		- 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。
 
		- 基于TCP/IP协议。速度快。
 
	
	
		
			
		
	
	7.2 SpringCloud(HTTP)
	7.2.1 SpringCloud
	
		- Spring Cloud来源于Spring,利用Spring Boot进行快捷开发。
 
		- Spring Cloud基本上都是使用了现有的开源框架进行的集成,学习的难度和部署的门槛就比较低,对于中小型企业来说,更易于使用和落地。
 
		- Spring Cloud 核心组件Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现,这也是Spring Cloud体系中最重要最核心的组件之一。
 
	
	7.2.2 HTTP
	
	7.3 小结
	
		- 
			
RPC服务和HTTP服务还是存在很多的不同点的:
			
				- 一般来说,RPC服务主要是针对大型企业的,而HTTP服务主要是针对小企业的
 
				- 因为RPC效率更高,而HTTP服务开发迭代会更快。
 
			
		 
		- 选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估。
 
	
	8. 微服务架构的基本概念
	8.1 服务提供者(Provider)
	
		- 提供服务的具体实现
 
		- 同一个微服务,既可以是provider,也可以是consumer。
 
	
	8.2 服务调用者(Consumer)
	
		- 通过一些框架来调用服务提供者提供的服务
 
		- 同一个微服务,既可以是provider,也可以是consumer。
 
	
 
        
                原文  
                https://segmentfault.com/a/1190000020184127