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

网站建设中目录是什么意思html网页实例

网站建设中目录是什么意思,html网页实例,大庆城市投资建设网站,网页制作软件 ad文章目录一、 Ribbon简介二、 使用Ribbon开发微服务1 创建springcloud工程 和 commons子模块2 开发服务提供者 - ribbonappservice3 开发服务消费者 - ribbonappclient三、 集中式与进程内负载均衡区别四、 Ribbon常见的负载均衡策略1 Ribbon中的常用负载均衡简介2 配置负载均衡… 文章目录一、 Ribbon简介二、 使用Ribbon开发微服务1 创建springcloud工程 和 commons子模块2 开发服务提供者 - ribbonappservice3 开发服务消费者 - ribbonappclient三、 集中式与进程内负载均衡区别四、 Ribbon常见的负载均衡策略1 Ribbon中的常用负载均衡简介2 配置负载均衡策略五、 Ribbon的点对点直连一、 Ribbon简介 Ribbon 是一个基于Http和TCP的客服端负载均衡工具它是基于Netflix Ribbon实现的。它不像spring cloud服务注册中心、配置中心、API网关那样独立部署但是它几乎存在于每个spring cloud 微服务中。包括feign提供的声明式服务调用也是基于该Ribbon实现的。ribbon默认提供很多种负载均衡算法例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。Ribbon可以用于解决并提供微服务的负载均衡的问题。 二、 使用Ribbon开发微服务 在Spring Cloud中使用Ribbon技术开发Eureka Client组件还是非常方便的。我们在开发过程中不需要像Dubbo那样关注服务的角色。无论是Provider还是Consumer都是一个微服务客户端只是在编码层面上服务消费者代码的开发相对比较麻烦。我们通过简单案例测试一下Spring Cloud中的微服务开发过程。 因为现在的Eureka Server部署在Linux中并已为Linux定义了新的主机域名需要先修改开发测试环境中的hosts文件。windows中的hosts文件位于C:\windows\system32\dirvers\etc\hosts。新增内容如下IP根据具体情况配置 192.168.14.128 eureka1 192.168.14.129 eureka21 创建springcloud工程 和 commons子模块 1.1 POM依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionpackagingpom/packagingmodulesmodulecommons/modulemoduleribbonappservice/modulemoduleribbonappclient/module/modulesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.2.2.RELEASE/version/parentgroupIdcom.bjsxt/groupIdartifactIdspringcloud/artifactIdversion1.0-SNAPSHOT/versiondependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.SR1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement /project1.2 commons 的pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud/artifactIdgroupIdcom.bjsxt/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdcommons/artifactId /project1.3 commons子模块中user类 包含setget等方法 2 开发服务提供者 - ribbonappservice 2.1 POM依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud/artifactIdgroupIdcom.bjsxt/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersion!-- 服务提供方项目 使用Ribbon技术开发 --artifactIdribbonappservice/artifactIddependencies!-- spring cloud是通过http协议对外发布一个基于REST规则的微服务通过SpringMVC技术中的Controller对外提供微服务的。--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Eureka客户端依赖spring cloud中服务的提供者和消费者都是Eureka客户端。必须依赖此资源 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdcom.bjsxt/groupIdartifactIdcommons/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies/project2.2 服务提供者代码 package com.bjsxt.userservice.controller;import com.bjsxt.entity.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap; import java.util.Map;/*** 提供服务的控制器*/ Controller public class UserController {RequestMapping(/user/save)ResponseBodypublic MapString, Object save(User user){System.out.println(新增用户数据 user);MapString, Object result new HashMap();result.put(code, 200); // 返回的状态码result.put(message, 新增用户成功); // 返回的处理结果消息。return result;} } 2.3 配置文件application.yml server:port: 8082spring:application:name: ribbon-app-serviceeureka: # Eureka客户端启动的时候如果未配置Eureka服务端地址列表则在localhost:8761注册client:service-url: # 配置Eureka服务端地址注册中心地址多个地址使用逗号 , 分隔。defaultZone: http://localhost:8761/eureka/2.4 启动类 package com.bjsxt.userservice;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 服务提供方启动类* 在Spring Cloud低版本中如果开发的代码是Eureka Client服务提供者和消费者* 那么启动类上需要增加注解* EnableEurekaClient - 当前应用是一个Eureka客户端* EnableDiscoveryClient - 当前应用需要启动发现机制就是找到Eureka服务端并注册发现服务。*/ SpringBootApplication public class RibbonAppServiceApp {public static void main(String[] args) {SpringApplication.run(RibbonAppServiceApp.class, args);} } 2.5 检查Eureka Server中的服务注册情况Eureka Server项目使用SpringCloud Netflix Eureka文章中的 3 开发服务消费者 - ribbonappclient 3.1 POM依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud/artifactIdgroupIdcom.bjsxt/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdribbonappclient/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdcom.bjsxt/groupIdartifactIdcommons/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies/project3.2 控制器 package com.bjsxt.userclient.controller;import com.bjsxt.entity.User; import com.bjsxt.userclient.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import java.util.Map;/*** 服务消费端*/ Controller public class UserController {Autowiredprivate UserService userService;RequestMapping(/user/save)ResponseBodypublic MapString, Object save(User user){// 调用本地服务代码本地服务代码远程调用application service服务提供方。MapString, Object result this.userService.save(user);System.out.println(远程调用返回的结果 result);return result;}} 3.3 服务接口 package com.bjsxt.userclient.service;import com.bjsxt.entity.User;import java.util.Map;public interface UserService {MapString, Object save(User user); }3.4 服务实现 package com.bjsxt.userclient.service.impl;import com.bjsxt.entity.User; import com.bjsxt.userclient.service.UserService; import com.netflix.loadbalancer.RandomRule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate;import java.util.Map;Service public class UserServiceImpl implements UserService {/*** 是Ribbon技术中的负载均衡客户端对象。其中封装了从Eureka Server上发现的所有的服务地址列表* 包括服务的名称IP端口等。*/Autowiredprivate LoadBalancerClient loadBalancerClient;/*** 远程方法调用。访问application service访问的地址是http://localhost:8080/user/save* param user* return*/Overridepublic MapString, Object save(User user) {// 根据服务的名称获取服务实例。服务名称就是配置文件yml中的spring.application.name// 服务实例包括这个名称的所有服务地址和端口。ServiceInstance instance this.loadBalancerClient.choose(ribbon-app-service);// 访问地址拼接StringBuilder builder new StringBuilder();builder.append(http://).append(instance.getHost()).append(:).append(instance.getPort()).append(/user/save).append(?username).append(user.getUsername()).append(password).append(user.getPassword()).append(remark).append(user.getRemark());System.out.println(本地访问地址 builder.toString());// 创建一个Rest访问客户端模板对象。RestTemplate template new RestTemplate();// 约束响应结果类型ParameterizedTypeReferenceMapString, Object responseType new ParameterizedTypeReferenceMapString, Object() {};// 远程访问application service。ResponseEntityMapString, Object response template.exchange(builder.toString(), HttpMethod.GET,null, responseType);MapString, Object result response.getBody();return result;} } 3.5 配置文件application.yml server:port: 8081spring:application:name: ribbon-app-clienteureka:client:service-url:defaultZone: http://localhost:8761/eureka/3.6 启动类 package com.bjsxt.userclient;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class RibbonAppClientApp {public static void main(String[] args) {SpringApplication.run(RibbonAppClientApp.class, args);} } 三、 集中式与进程内负载均衡区别 业界主流的负载均衡解决方案有集中式负载均衡和进程内负载均衡。 1 集中式负载均衡 即在客户端和服务端之间使用独立的负载均衡设施(可以是硬件如F5, 也可以是软件如nginx), 由该设施负责把访问请求通过某种策略转发至服务端。 2 进程内负载均衡 将负载均衡逻辑集成到客户端组件中客户端组件从服务注册中心获知有哪些地址可用然后自己再从这些地址中选择出一个合适的服务端发起请求。Ribbon就是一个进程内的负载均衡实现。 四、 Ribbon常见的负载均衡策略 Ribbon就属于进程内负载均衡它只是一个类库集成于Eureka Client进程Eureka Client进程通过访问注册中心Eureka Server发现服务列表发现的服务列表信息是由ribbon来管理的。当访问Application Service的时候Application Client会通过ribbon来找到合适的Application Service地址信息并发起远程调用请求。 1 Ribbon中的常用负载均衡简介 1 轮询策略默认 RoundRobinRule 轮询策略表示每次都顺序取下一个provider比如一共有5个provider第1次取第1个第2次取第2个第3次取第3个以此类推 2 权重轮询策略常用 WeightedResponseTimeRule 1.根据每个provider的响应时间分配一个权重响应时间越长权重越小被选中的可能性越低。 2.原理一开始为轮询策略并开启一个计时器每30秒收集一次每个provider的平均响应时间当信息足够时给每个provider附上一个权重并按权重随机选择provider高权越重的provider会被高概率选中。 3 随机策略不推荐 RandomRule 从provider列表中随机选择一个provider 4 最少并发数策略应用在硬件软件环境一致的情况下 BestAvailableRule 选择正在请求中的并发数最小的provider除非这个provider在熔断中。 5 在“选定的负载均衡策略”基础上进行重试机制 RetryRule 1.“选定的负载均衡策略”这个策略是轮询策略RoundRobinRule 2.该重试策略先设定一个阈值时间段如果在这个阈值时间段内当选择provider不成功则一直尝试采用“选定的负载均衡策略轮询策略”最后选择一个可用的provider 6 可用性敏感策略一般在同区域内服务集群环境中使用 AvailabilityFilteringRule 过滤性能差的provider,有2种 第一种过滤掉在eureka中处于一直连接失败provider 第二种过滤掉高并发的provider 7 区域敏感性策略应用在大型的物理隔离分布式环境中 ZoneAvoidanceRule 1.以一个区域为单位考察可用性对于不可用的区域整个丢弃从剩下区域中选可用的provider 2.如果这个ip区域内有一个或多个实例不可达或响应变慢都会降低该ip区域内其他ip被选中的权重。 2 配置负载均衡策略 可以通过修改 ribbonappclient 应用的全局配置文件来改变当前环境中使用的Ribbon负载均衡策略。 server:port: 8081spring:application:name: ribbon-app-clienteureka:client:service-url:defaultZone: http://localhost:8761/eureka/ribbon-app-service: # 远程访问这个命名的服务ribbon: # 底层Ribbon配置NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 就是具体的负载均衡策略类型全名五、 Ribbon的点对点直连 Ribbon也可以脱离Eureka Server注册中心通过配置的方式指定要调用的远程服务信息实现Ribbon点对点直连。修改的配置内容如下 server:port: 8081spring:application:name: ribbon-app-client#eureka: # client: # service-url: # defaultZone: http://localhost:8761/eureka/ribbon-app-service: # 远程访问这个命名的服务ribbon: # 底层Ribbon配置NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 就是具体的负载均衡策略类型全名listOfServers: localhost:8080 # 多个地址用逗号分隔。ribbon: # 关闭Ribbon自动访问Eureka服务端。eureka:enabled: false
http://www.zqtcl.cn/news/671751/

相关文章:

  • 信誉好的永州网站建设静态网站的短处
  • wordpress主题汉化软件河南网站优化哪家好
  • 关于水果的网站建设前端页面设计
  • 随州网站推广哪家好河南网站seo营销多少费用
  • 重庆网站优化排名软件方案谁能做网站开发
  • 河南官网网站建设报价app网站制作多少钱
  • 做网站页面一般用什么软件网站建设项目说明书
  • 做国外lead应该做什么网站网站运营报告
  • 建立一个自己的网站需要多少钱我的世界查找建筑网站
  • 广州网站建设互广做响应式网站设计图是多大的
  • 网站建设 运维 管理包括建大网站首页
  • 快手做任务网站python基础教程作者
  • 网站添加 百度商桥企信网查询
  • 用易语言可以做网站吗西安外贸网站开发
  • 常用网站推广方法电商便捷的网站建设平台
  • 做网站免费的app是什么免费公司注册
  • 做平面素材比较好的网站网络系统设计的步骤
  • 西安网站建设 乐云seo全国旅游景点网站开源
  • 中山快速做网站价格网站投稿源码
  • 免费网站建设教程青岛网站建设收费哪个平台好
  • 关于网站建设外文文献金蝶软件多少钱一套
  • 有高并发量门户网站开发经验国家商标局官网查询
  • 正规的招聘网站可信网站标志
  • 网站举报能不能查到举报人佛山企业网站建设电话
  • 家居网站建设如何现在去长沙会被隔离吗
  • 电子烟网站建设win2008iis7配置网站
  • 做网站的是什么职业微信公众号模板素材网站
  • 重庆川九建设有限责任公司官方网站成都网站海口网站建设
  • 珠宝 网站模板如何做公司官网
  • 贵阳网站制作免费iis7.5网站权限配置