202004微服务学习总结记录

近期在网上学了一些微服务的培训课程,写个笔记对自己理解的微服务知识进行记录,以期待不断进步。

 

概念

微服务片设计及理论,是分布式架构的一种。

不侧重代码,主要根据各种框架和中间件来实现,主要是根据内部业务进行设计的思想。

难点在于服务的拆分。和传统的单体应用不同,微服务需要根据对内部业务的理解进行设计。

 

服务化是把单机中本地方法调用改成RPC/API远程方法调用。

 

服务拆分主要分为横向拆分和纵向拆分。

横向拆分:公共且独立,例如权限认证模块、邮件发送、短信发送服务等

纵向拆分:业务维度,1)根据关联程度进行分拆2)根据领域建模DDD进行拆分

拆分的服务数还需要根据开发人数来定,一般项目建议拆分3-5个服务。

 

微服务中间关键节点

1 服务模块

微服务架构通过将单体结构拆分成多个小的服务,以此实现架构的解耦。给个微服务模块都有自己的服务模块和数据库,通过将服务地址注册到注册中心,实现等待调用。

2 注册中心

汇总各个子服务模块的服务地址,已实现服务汇总,等待网关的调用。

3 网关

连接PC、APP、Web客户端和服务,接收客户端请求后,从注册中心找到服务地址(服务发现),再进行服务调用。

 

微服务中间流程

服务模块将地址注册到注册中心,各客户端访问网关,网关从注册中心中找到匹配的服务名称地址,以实现服务的调用。

服务注册:服务启动后,自动注册到注册中心

服务发现:消费者启动后,自动订阅。从注册中心根据负载均衡等策略选一个服务地址进行调用

负载均衡:调用服务前,先查询节点上的服务列表

微服务定位问题、同时调用多个微服务后,之间的调用链及监控服务指标问题等

服务雪崩:重试轮询 熔断降级 

 

架构层面的负载均衡策略

应用在微服务内部,其他负载均衡还有网关负载均衡、DNS地域负载均衡等

1) 随机:较大的访问请求时,随机可以应付

2) 轮询:所有的服务都可以被访问

3) 加权轮询:根据服务器性能加权

4) 动态轮询:服务监控下,根据服务器压力动态设置权重

5) 最少活动连接:服务监控下,链接数最少的

6) 一致性HASH:对于同一个来源,服务链选择同一主机的服务

7) 自使用负载均衡:最快算法(跨网络)、观察算法(最小和最快)、预判算法(趋势记录)

 

consul

分布式服务发现及配置中间件

排除不健康的服务

你可能感兴趣的:(微服务)