微服务架构
一、概念
将项目拆分成几个独立的功能单元(服务)的架构
二、优点
项目复杂度降低
团队界限明确
部署灵活
三、应用场景
互联网线上用户庞大,需要考虑并发,数据量庞大,项目代码量大的情况下使用(分布式集群架构)。
四、常见微服务框架
阿里巴巴系:dubbo/dubbox(当当改良),基于RPC
Spring Cloud:Spring团队开发,基于RESTful
五、服务类型
Provider:提供者,提供服务的一方
Consumer:消费者/调用者,调用服务的一方
六、通信方式
RPC:远程过程调用协议Remote Procedure Call
基于TCP,和平台有关
@Compoent
public class QgGoodsServiceImpl implements QgGoodService{
@DubboConsumer
private RpcQgUserService rpcQgUserService ;
@DubboConsumer
private RpcQgGoodsService rpcQgGoodsService ;
}
RESTful:,表述性状态转移Representational State Transfer
基于HTTP、和平台无关
七、设计原则
单一职责:遵循每一个项目只负责自己的业务
围绕业务分切:根据业务来切分项目,一个业务一个项目
创建者负责:开发+运维
八、关于分布式和集群
分布式:关注项目拆分。将项目垂直/水平拆分,将一个大项目拆分成几个小项目。例如:将项目按照业务模块垂直拆分,再将项目按提供者和消费者水平拆分。
集群:关注项目部署。项目部署到一个服务器不够的情况下,将项目部署到更多的服务器上。
九、微服务架构与单体架构的区别
单体架构:传统企业开发、面向用户流量小、数据量少、并发几乎不用考虑、项目代码量少、部署单个服务器就够、运维复杂程度低。
微服务架构:互联网线上用户庞大、必须考虑并发、数据量庞大、项目代码量大、部署集群服务器、运维复杂程度高。
十、架构设计
业务架构设计:1. 谁要使用这个系统。2. 系统为用户提供什么功能。目的:设计应用架构
应用架构设计:前端应用/网关应用/环境应用/后端应用(消费/基础/服务)
技术架构设计:技术选型(数据库/搜索/缓存/提供者/注册中心/消费者/网关等等)