使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署
微服务的特点- 单一职责,此时项目专注于登录和注册
- 轻量级的通信,通信与平台和语言无关,http是轻量的,例如java的RMI属于重量的
- 隔离性,数据隔离
- 有自己的数据
- 技术多样性
互联网行业的快速发展,需求变化快,用户数量变化快
敏捷开发深入人心,用最小的代价,做最快的迭代,频繁修改、测试、上线
容器技术的成熟,是微服务的技术基础
- 独立性
- 使用者容易理解
- 技术栈灵活
- 高效团队
- 额外的工作,服务的拆分
- 保证数据一致性
- 增加了沟通成本
docker+k8s
通信层-
网络传输,用RPC(远程过程调用)
HTTP传输,GET POST PUT DELETE
基于TCP,更靠底层,RPC基于TCP,Dubbo(18年底改成支持各种语言),Grpc,Thrift -
用服务注册和发现
需要分布式数据同步:etcd,consul,zk
-
云管理平台、监控平台、日志管理平台,需要他们支持
-
服务管理平台,测试发布平台
-
服务治理平台
- 用微服务框架实现业务逻辑
-
客户端做,需要实现一套注册中心,记录服务地址,知道具体访问哪个,轮询算法去做,加权轮询
-
服务端做,比较简单,服务端启动,自动注册即可,AWS的ELB去访问
RPC相关内容
- 数据传输:JSON Protobuf thrift
- 负载:随机算法 轮询 一致性hash 加权
- 异常容错:健康检测 熔断 限流
服务监控 - 日志收集
- 打点采样



