服务治理(负载均衡)

服务治理

一、微服务架构与传统单体架构

1、微服务架构与SOA服务化的区别

 

SOA服务

微服务

目标

强调异构服务之间协作和集成

拆分模块、快速拓展

管理

着重中央管理

重在分散管理

粒度

通常粒度粗

粒度细,职责单一

 

二、常用微服务架构的设计模式

1、聚合器微服务设计模式

用户对聚合器进行单个调用,然后聚合器调用每个相关的微服务并收集数据,对其应用业务逻辑,并进一步发布作为一个REST端点。

2、代理服务设计模式

也是聚合器设计模式的变形,代理可以仅仅委派请求,也可以进行数据转换工作。

3、链式服务设计模式

这种模式在接收到请求后会产生一个经过合并的响应,如下图所示:

在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。 

4、分支服务设计模式

这种模式是聚合器模式的扩展,允许同时调用两个微服务链。

5、数据共享微服务设计模式

适合于单一架构向分布式过渡的阶段,一般是缓存共享,而不是数据库共享。把数据共享给其它服务。

6、异步消息传递微服务设计模式

虽然REST设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST请求/响应,如下图所示: 

问题思考:

1、如何解决其中一个服务响应面的问题?

1)如果不是强一致性要求,可以做消息中间件(kafka

2)如果是强一致性要求,可以考虑扩容,根据业务量把服务增加一些。

3)服务的优化,建立服务的监控体系,看是哪一步慢。查看有没有慢查询。

一、springCloud

1、SpringCloud alibaba

这幅图是 Spring Cloud Alibaba 系列组件,其中包含了阿里开源组件,阿里云商业化组件,以及集成Spring Cloud 组件。

2、快速启动

https://start.spring.io/

3、Ribbon

1个基于HTTPTCP的客户端负载均衡工具,它基于Netflix Ribbon实现,她没有独立部署,但是是cloud微服务的基础设施。微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的。

负载均衡对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。

@LoadBalanced开启客户端的负载均衡。

3、RestTemplate

是一个rest请求模板

4、Feign

使⽤feign之后,我们调⽤eureka 注册的其他服务,在代码中就像各个service之间相互调用那么简单。

json数据转换为实体

 /*
         1.最简单的常用方法,直接将一个json转换成实体类
         */
        ObjectMapper objectMapper = new ObjectMapper();
        String json = "{\"userName\":\"小李飞刀\",\"age\":18,\"addTime\":1591851786568}";

        //这里需要这么写,
        UserBase userBase = objectMapper.readValue(json, UserBase.class); //简单类型的时候,这样最方便

        UserBase userBase1 = objectMapper.readValue(json, new TypeReference<UserBase>() {}); //这样也可以,TypeReference主要针对复杂类型

前端接口调用后台如何做到绝对的安全?

1、加密。

2、中间件,中间件做加密。安全认证!

3、后台拿到请求去访问数据库时,一定要做一个sql的安全验证。

一、如何把单体服务平滑到微服务?

1、把拆的服务列数来和产品对,梳理服务里面有哪些东西,拆的多细,定义好服务的边界值。

2、数据库表的归类。

3、选型,微服务落地。①代码架构是否要调整;② 从边界服务开始;③ 借助公司的公共组件

4、代码合并

考虑服务的扩容机制、运维成本;代码的管理

 

posted @ 2021-04-23 21:09  majingyun  阅读(525)  评论(0编辑  收藏  举报