微服务基本原理
# 微服务基本原理
# SOA、分布式、微服务之间有什么关系和区别?
- 分布式架构是指将单体架构中的各个部分拆分,然后部署不同的机器或进程中去,SOA和微服务基 本上都是分布式架构的
- SOA是⼀种⾯向服务的架构,系统的所有服务都注册在总线上,当调⽤服务时,从总线上查找服务 信息,然后调⽤
- 微服务是⼀种更彻底的⾯向服务的架构,将系统中各个功能个体抽成⼀个个⼩的应⽤程序,基本保 持⼀个应⽤对应的⼀个服务的架构
# 什么是服务雪崩?什么是服务限流?
- 当服务A调⽤服务B,服务B调⽤C,此时⼤量请求突然请求服务A,假如服务A本身能抗住这些请 求,但是如果服务C抗不住,导致服务C请求堆积,从⽽服务B请求堆积,从⽽服务A不可⽤,这就 是服务雪崩,解决⽅式就是服务降级和服务熔断。
- 服务限流是指在⾼并发请求下,为了保护系统,可以对访问服务的请求进⾏数量上的限制,从⽽防 ⽌系统不被⼤量请求压垮,在秒杀中,限流是⾮常重要的。
# 什么是服务熔断?什么是服务降级?区别是什么?
- 服务熔断是指,当服务A调⽤的某个服务B不可⽤时,上游服务A为了保证⾃⼰不受影响,从⽽不再 调⽤服务B,直接返回⼀个结果,减轻服务A和服务B的压⼒,直到服务B恢复。
- 服务降级是指,当发现系统压⼒过载时,可以通过关闭某个服务,或限流某个服务来减轻系统压 ⼒,这就是服务降级。
相同点:
- 都是为了防⽌系统崩溃
- 都让⽤户体验到某些功能暂时不可⽤
不同点:熔断是下游服务故障触发的,降级是为了降低系统负载
# 怎么拆分微服务?
拆分微服务的时候,为了尽量保证微服务的稳定,会有⼀些基本的准则:
- 微服务之间尽量不要有业务交叉。
- 微服务之前只能通过接⼝进⾏服务调⽤,⽽不能绕过接⼝直接访问对⽅的数据。
- ⾼内聚,低耦合。
# 在项⽬中是怎么来保证微服务敏捷开发的
- 开发运维⼀体化。
- 敏捷开发: ⽬的就是为了提⾼团队的交付效率,快速迭代,快速试错
- 每个⽉固定发布新版本,以分⽀的形式保存到代码仓库中。快速⼊职。任务⾯板、站⽴会议。团队 ⼈员灵活流动,同时形成各个专家代表
- 测试环境- ⽣产环境 -开发测试环境SIT-集成测试环境-压测环境STR-预投产环境-⽣产环境PRD
- 晨会、周会、需求拆分会