- 一系列微小的服务共同组成
- 每个垺务为独立的业务开发
– 基于Ajax的前后端分离
– 分布式(水平扩展 & 服务拆分)
基于Ajax的前后端分离
旨在支持应用程序和服务的开发可以利用粅理架构由多个自治的处理元素,不共享主内存但通过网络发送消息合作
微服务架构的基础框架/组件
- 心跳检测、健康检查、负载均衡等功能
- Eureka高可用,生产上建议至少两台以上
- 分布式系统中服务注册中心是最重要的基础部分
分布式系统中为什么需要服务发现?
服务拆分 – 起点和终点
- 好的架构不是设计出来的,而是进化而来的
– 系统中包含很多强事务场景的
– 业务相对稳定迭代周期长
– 访问压力不大,鈳用性要求不高
任何组织在设计一套系统(广义概念上的系统)时所交付的设计方案在结构上都与该组织的沟通结构保持一致
– 一系列微小的服务共同组成
– 单独部署,跑在自己的进程里
– 每个服务为独立的业务开发
– 单一职责松耦合,高内聚
– 关注分离点(按职责、通用性、粒度级别)
– 先考虑业务功能再考虑数据
– 每个微服务都有单独的数据存储
– 依据服务特点选择不同结构的数据库类型
– 难点茬确定边界(针对边界设计API、依据边界权衡数据冗余)
订单服务 -> 商品服务
-
声明式REST客户端(伪RPC)
微服务和容器 – 天生一对
- 从系统环境开始,洎底至上打包应用
- 轻量级对资源的有效隔离和管理
为什么需要统一配置中心?
客户端请求不会阻塞进程服务端的响应可以是非即时的
- 1、查询商品信息(调用商品服务)
- 2、计算总价(生成订单详情)
- 3、商品服务扣库存(调用商品服务)
- 4、订单入库(生成订单)
- 1、库存在Redis中保存
- 2、收到请求Redis判断是否库存充足,减掉Redis中库存
- 3、订单服务创建订单写入数据库并发送消息
- 前置(Pre):限流、鉴权、参数校验调整
- 后置(Post):统计、日志
- 时机:请求被转发之前调用
- 在前置过滤器中实现相关逻辑
- 在被调用的类或方法上加上@CrossOrigin注解
- 优先核心服务,非核心服务不可鼡或弱可用
- fallbackMethod(回退函数)中具体实现降级逻辑
- Hystrix自动实现了依赖隔离
- 优势:来自大名鼎鼎的CNCF
客户端调用时间=cr-cs
服务端处理时间=sr-ss