ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

服务治理

2021-04-23 21:35:53  阅读:126  来源: 互联网

标签:调用 架构 请求 json 治理 服务 设计模式


服务治理

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

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个基于HTTP和TCP的客户端负载均衡工具,它基于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、代码合并

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

 

标签:调用,架构,请求,json,治理,服务,设计模式
来源: https://www.cnblogs.com/majingyun/p/14695562.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有