当前位置: 首页 > news >正文

东莞网站建设 少儿托管服装网站的建设策划

东莞网站建设 少儿托管,服装网站的建设策划,平面设计素材网站推荐,网站配色方案在 Spring Cloud 中#xff0c;主要有以下几种通信方式#xff1a; 一、基于 HTTP 的 RESTful API 工作原理#xff1a; 这是一种常见的通信方式#xff0c;各个微服务通过发送 HTTP 请求来相互调用。服务提供者暴露 RESTful API 接口#xff0c;服务消费者通过 HTTP 客户…在 Spring Cloud 中主要有以下几种通信方式 一、基于 HTTP 的 RESTful API 工作原理 这是一种常见的通信方式各个微服务通过发送 HTTP 请求来相互调用。服务提供者暴露 RESTful API 接口服务消费者通过 HTTP 客户端如RestTemplate、Feign等发送请求。 例如一个订单服务需要查询商品信息它可以通过 HTTP 请求调用商品服务提供的 API 接口。 优点 简单易用基于广泛使用的 HTTP 协议开发人员熟悉度高。 与语言无关不同语言实现的微服务可以方便地进行通信。 可以利用 HTTP 的各种特性如缓存、认证、授权等。 缺点 相对来说性能可能不如其他通信方式因为 HTTP 协议有一定的开销。 对于高性能、低延迟的场景可能不太适合。 二、基于 RPCRemote Procedure Call的通信 以 Dubbo 在 Spring Cloud 中的应用为例 Dubbo 是一个高性能的 RPC 框架可以与 Spring Cloud 集成。通过 Dubbo服务提供者和服务消费者之间可以进行高效的远程方法调用。 例如使用 Dubbo 时服务提供者将服务注册到注册中心服务消费者从注册中心获取服务提供者的地址列表然后通过 RPC 调用服务提供者的方法。 优点 性能高通常比基于 HTTP 的通信方式更快。 可以支持多种序列化方式如 Hessian、JSON、Protobuf 等满足不同场景的需求。 缺点 相对复杂需要引入额外的框架和依赖。 与特定的 RPC 框架绑定可能会限制技术选型的灵活性。 三、消息队列Message Queue 工作原理 各个微服务通过发送和接收消息来进行通信。服务生产者将消息发送到消息队列服务消费者从消息队列中获取消息并进行处理。 例如一个订单服务在订单创建成功后将订单信息发送到消息队列库存服务从消息队列中获取订单信息并进行库存扣减操作。 优点 解耦服务之间的直接依赖提高系统的可扩展性和容错性。 可以实现异步通信提高系统的响应速度和吞吐量。 缺点 引入了额外的中间件增加了系统的复杂性。 需要处理消息的顺序性、重复消费等问题。 总之Spring Cloud 中可以根据具体的业务需求和场景选择合适的通信方式。HTTP 的 RESTful API 简单易用适合大多数场景RPC 通信性能高适合对性能要求较高的场景消息队列适合解耦和异步通信的场景。 四、基于 HTTP 的 RESTful API的实现 一、主要有两种 RestTemplate 方式 Feign 的方式 二、RestTemplate 方式 RestTemplate 中也分为三种方式 简单来演示一下吧 第一种方式 直接使用 RestTemplate url 写死 服务端编写 /** 用来测试与 order 服务的连接 author ccyang date 2018/7/1 16:06 */ RestController public class serverController { GetMapping(“/getMsg”) public String getMsg(){ return “this is product’ msg”; } } 客户端编写 /*** author ccyang* date 2018/7/1 16:13*/RestControllerSlf4jpublic class clientController {​GetMapping(/getProductMsg)public String getProductMsg(){​RestTemplate restTemplate new RestTemplate();String response restTemplate.getForObject(http://localhost:8080/getMsg,String.class);log.info(response {} , response);return response;}​}​ 然后去访问 http://localhost:8080/getMsg 即可。 因为服务端的 api 被硬编码在客户端因此有两个缺点 – 当注册中心有很多服务时我们可能不知道我们需要的服务由谁提供、api是多少因此就可能无法调用到服务。 –当某个服务部署了多个例如 api 是 “localhost:9080/getMsglocalhost:9081/getMsg “那么此时就需要负载均衡这种硬编码显然不符合场景。 第二种方式 service端代码依旧客户端通过 LoadBalancerClient 来获取应用名进而获取地址和端口在格式化拼接地址从而调用 product服务。如下 /** 测试获取 product服务的msg author ccyang date 2018/7/1 16:13 */ RestController Slf4j public class clientController { Autowired private LoadBalancerClient loadBalancerClient; GetMapping(“/getProductMsg”) public String getProductMsg(){   RestTemplate restTemplate new RestTemplate();ServiceInstance serviceInstance loadBalancerClient.choose(PRODUCT); // serviceId 为提供服务的应用名String url String.format(http://%s:%s,serviceInstance.getHost(),serviceInstance.getPort() /getMsg);String response restTemplate.getForObject( url, String.class);log.info(response {} , response);return response;123456 } } 缺点是每次调用服务都要这样写编码很麻烦。 第三种方式 通过 LoadBalanced可在restTemplate 直接使用应用名字。 Component public class RestTemplateConfig { Bean LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } } RestController Slf4j public class clientController {  Autowiredprivate RestTemplate restTemplate;​GetMapping(/getProductMsg)public String getProductMsg(){​String response restTemplate.getForObject( http://PRODUCT/getMsg, String.class); // 通过应用名进行访问log.info(response {} , response);return response;}12345678910 } 三、使用 Feign 的方式进行通信 声明式 REST客户端伪 RPC 采用了基于接口的注解 先看看如何使用 Feign: \1. 添加依赖 !-- add feign , note: must add version --dependencygroupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-feign/artifactIdversion1.4.4.RELEASE/version/dependency​2. 添加注解到主类上​​EnableFeignClients​3. 定义要调用的接口​​FeignClient(name product) // 服务名public interface ProductClient {​GetMapping(/getMsg) // 这里要和 Product服务提供的接口一致String productMsg();​}​​4. 在该使用的地方使用注解中提供的方法​​RestControllerSlf4jpublic class clientController {​Autowiredprivate ProductClient productClient; // 有报错不影响GetMapping(/getProductMsg)public String getProductMsg(){​String response productClient.productMsg();log.info(response {} , response);return response;}}​ Feign 可以看做是一个伪 RPC而且HTTP远程调用对开发者完全透明。 RestTemplate 内部使用 Ribbon做负载均衡 Feign 内部也是使用的Ribbon做负载均衡 参考springCloud 服务间的两种通信方式_springcloud项目之间是如何通信的-CSDN博客
http://www.w-s-a.com/news/646632/

相关文章:

  • 简易网站的html代码wordpress音乐html
  • 四川住房和城乡建设厅网站打不开海山网站建设
  • 深圳设计功能网站如何用html制作网站
  • 网络优化软件下载竞价排名和seo的区别
  • 龙华新区做网站中高端网站建设
  • 网站开发小图标大全手机网站设计开发
  • 网页设计设计一个网站口碑营销的优点
  • 枣庄建网站的公司唐山企业网络推广培训
  • 张家界建设企业网站学校资源网站建设方案
  • 网站制作教程书籍业务管理系统
  • 上传网站空间的建站程序怎么删除c 网站开发案例详解下载
  • 企业网站维护兼职丹阳网站优化
  • 秦皇岛网站开发公司怎么注册自己的公司
  • 写作网站哪个能得稿费绿色环保企业网站模板
  • 牡丹江网站建设定制开发安徽建设工程信息网官网入口
  • 有什么好的网站建设的书适合在家做的网站工作
  • wordpress情侣源码西安网站快速优化
  • 昆明网站建设高端定制100种班服设计图
  • 网站开发程序说明html网页制作接单
  • 企业网站货物查询怎么做制作文件的软件
  • 怎么做网站的防盗链北京门户企业网站建设
  • 网站推广的主流方法淘客网站 源码
  • 网站海外推广怎么做多用户商城系统源码教程
  • 猎头做单网站网站创建费用
  • 住房和城乡建设网站 上海自己做网站还是公众号
  • 投票网站怎么制作电商网站模板html
  • 攀枝花移动网站建设抖音广告投放平台
  • 什么是网站设计第一装修网
  • 公司网站建设一条织梦门户网站源码
  • 网站改版中su域名注册