springCloud笔记一:架构演进与分布式系统基础知识
传统架构演进到分布式系统
- 互联网刚开始的架构
- 用户增多后
- 用户继续增多
增加nginx的集群分发:和网关分发
网关主要用来拦截用户信息,是否登录的。
负载均衡器:高可用,LVS+keepalive
- 单体应用
开发速度慢,启动时间长,依赖庞大,等等。
- 微服务
易开发,理解和维护。
独立的部署和启动等。
不足:
分布式系统—》分布式事务问题,需要管理多个服务,----》服务治理问。
微服务核心基础讲解
- 讲解微服务核心知识
1、网关:路由转发+过滤器。
api/v1/product 商品模块
api/v1/user 用户模块
过滤器用来检测用户是否登录系统,动态插拔作用
2、服务注册发现:调用和被调用方的信息和维护
每个服务启动时,都会向注册中心进行注册。
3、配置中心:管理配置,动态更新。
每个服务都有一个application.properties,如果要修改都要进行修改,然后再提交,部署。当服务有上百个时,很麻烦。可以添加一个配置中心,把所有的服务配置集中在一起,并可视化。并进行动态更新。
4、链路追踪:分析调用链路耗时。(qbs)
例子:用户下单—》查询商品服务获取商品价格----》xxxx服务。通过链路追踪,就可以查询出那个地方qbs高了,然后进行处理。
5、负载均衡:分发负载
通过ngxin进行负载均衡。
6、熔断:保护自己和被调用方。
熔断:当一个服务调用另一个服务时,突然特别慢。熔断机制就会发现,然后暂停其他服务调用这个服务接口,等待x分钟后,再去测试,如果测试满足要求就走正常流程。
常见的微服务框架
- 服务中的角色
consumer:调用方
provider;被调用方
一个接口一般都会充当两个角色(不是同时充当)
- dubbo:
zookeeper+dubbo+springMVC/SpringBoot
配套:
通信方式:RPC
注册中心:zookeper/redis
配置中心:diamond
- springCloud:
全家桶+轻松嵌入第三方组件(Netflix 奈飞)
配套:
通信方式:http restful
注册中心:eruka/consul
配置中心:config
断路器:hystrix
网关:zuul
分布式追踪系统:sleuth+zipkin
微服务下电商项目基础模块设计
- 用户服务
1、用户信息接口
用户信息接口
登录接口
2、商品服务
商品列表
商品详情
3、订单服务
我的订单
下单接口