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

如何开办网站页面设计文档

如何开办网站,页面设计文档,定制网站建设推广服务,wordpress 修改密码页面在上一文中#xff0c;我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题#xff1a;如果用户微服务和商品微服务在服务器上部署多份的话#xff0c;之前的程序无法实现服务调用的负载均衡功能。 本文就带着大家一起实现服务调用的负载均衡功能 1. 负载均衡…在上一文中我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题如果用户微服务和商品微服务在服务器上部署多份的话之前的程序无法实现服务调用的负载均衡功能。 本文就带着大家一起实现服务调用的负载均衡功能 1. 负载均衡 负载均衡将原本由一台服务器处理的请求根据一定的规则分担到多台服务器上进行处理。目前大部分系统都实现了负载均衡的功能 负载均衡根据发生的位置可以分为服务端负载均衡和客户端负载均衡 服务端负载均衡 服务端负载均衡指的是在服务端处理负载均衡的逻辑如下图所示 负载均衡在服务端进行处理当客户端访问服务端的服务 A 时首先访问到服务端的负载均衡器由服务端的负载均衡器将客户端的请求均匀的分发到服务端部署的两个服务 A 上 客户端负载均衡 客户端负载均衡指的是在客户端处理负载均衡的逻辑如下图所示 负载均衡逻辑在客户端一侧客户端应用调用服务端的应用 A 时在向服务端发送请求时就已经经过负载均衡的逻辑处理并直接向服务端的某个服务发送请求 2. 启动多服务 为了实现服务调用的负载均衡功能我们在本地的 IDEA 环境中分别启动两个用户微服务进程和两个商品微服务进程 2.1 启动多个用户/商品微服务 这里我们在IDEA开发环境中启动多个用户微服务其实也就是在同一台机器服务器上启动多个用户微服务。启动用户微服务时默认监听的端口为 8060主要由如下配置决定 server:port: 8060在同一台机器服务器上启动多个用户微服务时只需要保证启动的多个用户微服务监听的端口号不同即可。 IDEA 中可以通过配置不同的端口号来启动多个相同的服务如下所示再配置一个用户微服务使其端口号为 8061 按相同方式配置多个商品微服务。 配置好后启动两个用户/商品微服务。打开 Nacos 的服务列表如下所示 3. 实现自定义负载均衡 这里我们通过修改订单微服务的代码来实现自定义负载均衡。 由于在整个项目中订单微服务作为客户端存在由订单微服务调用用户微服务和商品微服务所以这里采用的是客户端负载均衡的模式 3.1 随机负载均衡 修改 getServiceUrl() 方法使其能够在多个服务地址中随机获取一个服务地址而不总是获取第一个服务地址 private String getServiceUrl(String serviceName){ListServiceInstance instances discoveryClient.getInstances(serviceName);int index new Random().nextInt(instances.size());ServiceInstance serviceInstance instances.get(index);String url serviceInstance.getHost() : serviceInstance.getPort();log.info(负载均衡后的服务地址为:{}, url);return url; }在 getServiceUrl() 方法中首先通过服务的名称在 Nacos 中获取到所有的服务实例列表然后使用随机函数随机生成一个 0 到服务列表长度减1的整数而这个随机生成的整数恰好在服务实例列表的下标范围内然后以这个整数作为下标获取服务列表中的某个服务实例。从而以随机的方式实现了负载均衡并从获取到的服务实例中获取到服务实例所在服务器的 IP 地址和端口号拼接成 IP:PORT 的形式返回 启动订单微服务多次调用下单接口。 在订单微服务输出的日志信息中会存在如下所示的日志 3.2 使用 Ribbon 实现负载均衡 Ribbon 是 SpringCloud 提供的一个能够实现负载均衡的组件使用 Ribbon 能够轻松实现微服务之间调用的负载均衡 添加 LoadBalanced 注解 Configuration public class LoadBalanceConfig {BeanLoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}}修改 saveOrder() 方法将 userUrl 修改为 userServer // ... User user restTemplate.getForObject(http:// userServer /user/get/ orderParamVo.getUserId(), User.class);Product product restTemplate.getForObject(http:// productServer /product/get/ orderParamVo.getProductId(), Product.class); // ...启动的每个用户微服务和商品微服务都会打印相关的日志说明使用Ribbon实现了负载均衡功能 3.3 使用 Fegin 实现负载均衡 Fegin 是 SpringCloud 提供的一个 HTTP 客户端但只是一个声明式的伪客户端它能够使远程调用和本地调用一样简单。阿里巴巴开源的 Nacos 能够兼容 Ribbon而 Fegin 又集成了 Ribbon所以使用 Fegin也能够实现负载均衡。 修改订单微服务代码 1、在订单微服务的 pom.xml 文件中添加 Fegin 相关的依赖如下所示 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency2、在订单微服务上的主类添加 EnableFeignClients 注解 3、添加 feign 包 用户接口 FeignClient(server-user) public interface UserService {GetMapping(value /user/get/{uid})User getUser(PathVariable(uid) Long uid);}商品接口 FeignClient(server-product) public interface ProductService {/*** 获取商品信息*/GetMapping(value /product/get/{pid})Product getProduct(PathVariable(pid) Long pid);/*** 更新库存数量*/GetMapping(value /product/update_count/{pid}/{count})ResultInteger updateCount(PathVariable(pid) Long pid, PathVariable(count) Integer count);}4、修改下单接口 //... User user userService.getUser(orderParamVo.getUserId()); if (user null){throw new RuntimeException(未获取到用户信息: JSONObject.toJSONString(orderParamVo)); } // ... Product product productService.getProduct(orderParamVo.getProductId()); if (product null){throw new RuntimeException(未获取到商品信息: JSONObject.toJSONString(orderParamVo)); }启动订单微服务多次调用下单接口。 启动的每个用户微服务和商品微服务都会打印相关的日志说明使用Ribbon实现了负载均衡功能 代码地址 代码已经上传至码云码云地址 其中数据库文件位于 db 文件夹下。
http://www.w-s-a.com/news/719443/

相关文章:

  • 企业网站图片上传网站建设和应用的情况
  • 网站不显示内容吗聊城网架公司
  • 南昌网站建设企业网站托管外包怎么做
  • 做非洲外贸的网站网站可以用PS设计吗
  • PHP搭建IDC网站青岛福瀛建设集团网站
  • 安徽网站优化多少钱软件界面设计的基本原则
  • 网站建设动态页面修改删除dnf卖飞机的网站怎么做的
  • 万网是做什么的seo综合
  • 网站关键词分隔符php网站开发平台下载
  • 郑州那家做网站便宜商业计划书免费word版
  • 秦时明月的个人网站怎么做网站开发公司需要招聘哪些人
  • 广告网站建设制作设计服务商安卓app软件定制
  • 公司网站设计与实现中国职业培训在线官方网站
  • 网站服务器空间租用郑州官网网站推广优化
  • 郑州网站建设外包业务wordpress站酷首页
  • 机关门户网站 建设 方案个人怎么申请注册商标
  • 梧州网站建设有哪些九江网站建设优化
  • APP网站建设开发企业发展英文seo招聘
  • 临海市住房和城乡建设规划局网站高校图书馆网站的建设方案
  • 建立门户网站张店易宝网站建设
  • wordpress中英文站点厦门seo顾问屈兴东
  • 邯郸网站建设项目重庆网站备案系统
  • 网站导航容易做黄冈网站建设报价
  • 美橙互联建站网站被截止徐州网站建站
  • 网站班级文化建设视频深圳企业网页设计公司
  • 钦州网站建设公司做宣传网站买什么云服务器
  • 58同城有做网站wordpress怎么改标题和meta
  • 安通建设有限公司网站东莞地铁app
  • 群晖nas做网站滨州教育平台 网站建设
  • 住房城市乡建设部网站装修平台有哪些