目录
软件架构是在软件的内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分,并使这些部分相互分工、彼此协作,为用户提供需要的价值。
1)业务需求
2)技术栈
3)成本
4)组织架构
5)可扩展性
6)可维护性
使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通信机制互联,并且他们可以通过自动化的方式部署。
1. 1 多微才算微
实际上是传递的是思路,而不是固定的量,不按照代码量和开发时间来算。
1. 2 微服务特征
1)单一职责(关联性不大的单一功能)
2)轻量级通信(与平台无关和语言无关)
3)隔离性(每个微服务运行在自己的进程中不会相互干扰)
4)有自己的数据(有自己存储数据的地方)
5)技术的多样性(c java等开发的微服务)
1. 3 微服务诞生背景
1)互联网行业的快速发展
2)敏捷开发(频繁修改、测试),精益方法深入人心
3)容器技术的成熟(docker)
1. 1 假定业务场景
1)一个在线教育的网站的部分功能
2)用户可以登陆注册、获取用户信息
3)有发送邮件发送短信的功能
4)可以查看课程列表和对课程的基本CRUD
1.2 架构图
1)单体架构下业务图
2)微服务架构下业务图
1)一对一还是一对多?
2)同步的还是异步的?
1)REST API (把动作类的东西,变成Http本身的一种请求方式,URL设计就会相对来说比较简单)
2)RPC
3)MQ(发布订阅的方式)
1.3 如何选择RPC框架(微服务之间通讯选择最多的一种情况)
1)I/O、线程调度模型
2)序列化方式
3)多语言支持
4)服务治理
1.4 流行的RPC框架
1)Dubbo/Dubbox
2)Motan
3)Thrift
4)Grpc
1.1 Dubbo
1)pic(蓝色:初始化的时候启动,实线:同步)
1.1 Motan
1)pic
1.1 Thrift
1)pic
1.3 GRPC
1)pic
1.4 对比
1)pic
1)客户端发现
2)服务端发现
流行的服务编排工具 Mesos、 Docker Swarm、Kubernetes
化繁为简
Java的润滑剂
简化Java的分布式系统