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

央企网站建设意义广告优化师面试常见问题

央企网站建设意义,广告优化师面试常见问题,上海猎头公司哪家好,旅游类网站开发任务书Eureka-注册中心Eureka简介官方网址#xff1a;https://spring.io/projects/spring-cloud-netflixEureka介绍Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Zooleeper nacos.Eureka 采用了 C-S 的设计架构。Eureka Server 作为服…Eureka-注册中心Eureka简介官方网址https://spring.io/projects/spring-cloud-netflixEureka介绍 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Zooleeper nacos. Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器它是服务注册中心。而系统中的其他微服务使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块比如Zuul就可以通过 Eureka Server 来发现系统中的其他微服务并执行相关的逻辑。 Eureka包含两个组件Eureka Server和Eureka Client Eureka Server提供服务注册服务 各个节点启动后会在EurekaServer中进行注册这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息服务节点的信息可以在界面中直观的看到EurekaClient是一个Java客户端用于简化Eureka Server的交互客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳EurekaServer将会从服务注册表中把这个服务节点移除默认90秒Eureka基本原理 基本原理上图是来自eureka的官方架构图这是基于集群配置的eureka - 处于不同节点的eureka通过Replicate进行数据同步 - Application Service为服务提供者 - Application Client为服务消费者 - Make Remote Call完成一次服务调用 服务启动后向Eureka注册Eureka Server会将注册信息向其他Eureka Server进行同步当服务消费者要调用服务提供者则向服务注册中心获取服务提供者地址然后会将服务提供者地址缓存在本地下次再调用时则直接从本地缓存中取完成一次调用。 当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时则在服务注册中心将服务置为DOWN状态并把当前服务提供者状态向订阅者发布订阅过的服务消费者更新本地缓存。 服务提供者在启动后周期性默认30秒向Eureka Server发送心跳以证明当前服务是可用状态。Eureka Server在一定的时间默认90秒未收到客户端的心跳则认为服务宕机注销该实例。eureka搭建四个子项目作用如下 ①EurekaServiceEureka服务中心子项目作用是作为Eureka服务程序管理其他微服务的状态。其他Eureka客户端子项目运行时需在此模块进行注册。 ②ServiceOneEureka客户端-微服务1提供了一个业务接口“serviceOne”。 ③ServiceTwoEureka客户端-微服务2提供了一个业务接口“serviceTwo”。 ④ServiceThreeEureka客户端-微服务3提供了两个业务接口 “serviceThree_toOne”内部调用ServiceOne的“serviceOne接口” “serviceThree_toTwo”内部调用ServiceTwo的“serviceTwo接口”新建SpringCloud父项目1.新建基于Maven的项目作为SpringCloud其他子模块的父项目new-Project选择基于Maven的项目填入GroupId和AtrifactId项目名称然后创建。2.父项目不需要写源码所以删除项目的src文件夹。3.配置父项目pom.xml中需增加的内容!--指定版本属性下面引用-- propertiesjava.version1.8/java.versionspring-cloud.version2021.0.3/spring-cloud.versionfastjson.version1.2.47/fastjson.version /properties !--引入SpringBoot父项目不要通过dependencyManagement方式引入否则打包会有问题-- parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.8/versionrelativePath/ !--lookup parent from repository-- /parent!--dependencyManagement可以理解为多继承父项目-- dependencyManagementdependencies!--引入SpringCloud父项目--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency!--阿里巴巴Fastjson--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion${fastjson.version}/version/dependency/dependencies /dependencyManagement!--统一设置打包插件-- buildplugins!--SpringBoot帮助maven打包项目的插件--plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins /build新建Eureka服务中心模块Eureka服务中心子项目作用是作为Eureka服务程序管理其他微服务的状态。1.在父项目中新建子模块项目new-Module依然选择maven项目。Eureka服务中心项目名称我们命名为EurekaService。配置文件Eureka的pom.xml中新增对Eureka的依赖包和maven打包插件dependencies!--Eureka项目核心包--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency /dependencies配置Eureka服务中心的application.yml配置文件下面是文字版本的便于拷贝server:port: 8001eureka:instance:hostname: 127.0.0.1client:#由于该应用为注册中心所以设置为false代表不向注册中心注册自己 register-with-eureka: false #由于注册中心的职责是维护服务器示例它不需要去检索服务所以设置为false fetch-registry: false service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eurekaspring:application:name: service-eureka主类main方法创建三个微服务子模块并注册为Eureka客户端创建三个Eureka客户端子项目我们创建3个Eureka客户端子项目命名为ServiceOne、ServiceTwo、ServiceThree。它们的配置都基本一致。①ServiceOne在Eureka中注册为客户端提供一个业务接口http://127.0.0.1:8001/serviceOne②ServiceTwo在Eureka中注册为客户端提供一个业务接口http://127.0.0.1:8002/serviceTwo③ServiceThree在Eureka中注册为客户端提供两个业务接口内部调用ServiceOne和ServiceTwo的接口http://127.0.0.1:8003/serviceThree_toOnehttp://127.0.0.1:8003/serviceThree_toTwo配置Eureka客户端子项目的pom.xml三个子项目pom.xml的依赖包完全一致dependencies !-- Eureka客户端 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-netflix-eureka-client/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId /dependency /dependencies配置三个子项目的application.yml三个子项目的application.yml配置文件基本一样ServiceOne的application.ymlServiceTwo的application.ymlServiceThree的application.yml 三个子项目的主类main方法ServiceOne的主类与ServiceTwo基本一致ServiceTwo的主类(与ServiceOne基本一致ServiceThree的主类略有不同需配置RestTemplate的Bean三个子项目的Controller控制器ServiceOne的控制器与ServiceTwo基本一致ServiceTwo的控制器(与ServiceOne基本一致ServiceThree的控制器与前两个略有不同需注入主类配置的RestTemplate通过它内部调用微服务ServiceOne和ServiceTwo的业务接口package com.tjetc.controller;import com.alibaba.fastjson.JSONObject; import com.netflix.discovery.converters.Auto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;RestControllerpublic class ServiceThreeController {Autowiredprivate RestTemplate restTemplate;/*** http请求serviceOne的url并接收返回值* return*/RequestMapping(serviceThree_toOne)public JSONObject serviceThreeToOne() {//restTemplate发出get请求String result restTemplate.getForObject(http:127.0.0.1:8001/serviceOne, String.class);JSONObject jsonObject new JSONObject();jsonObject.put(code, 200);jsonObject.put(msg, service three to one, return msg);jsonObject.put(data, result);return jsonObject;}RequestMapping(serviceThree_toTwo)public JSONObject serviceThreeToTwo() {String result restTemplate.getForObject(http:127.0.0.1:8002/serviceTwo, String.class);JSONObject jsonObject new JSONObject();jsonObject.put(code, 200);jsonObject.put(msg, service three to two, return msg);jsonObject.put(data, result);return jsonObject;}RequestMapping(serviceThree)public JSONObject serviceThree() {JSONObject jsonObject new JSONObject();jsonObject.put(code, 200);jsonObject.put(msg, service three, return msg);return jsonObject;} }结果验证1.按顺序启动各个子项目先启动EurekaService子项目它是Eureka服务器其他子模块都需作为Eureka客户端在它上面进行注册再启动ServiceOne、ServiceTwo和ServiceThree启动后如下图2.进入Eureka服务状态页面查看服务注册情况在谷歌浏览器中输入http://127.0.0.1:8000/进入Eureka服务页面我们主要查看当前注册情况如上图所示三个Eureka客户端子项目都注册成功。3.验证ServiceOne的接口在浏览器地址栏或者PostMan中请求ServiceOne的接口地址http://127.0.0.1:8001/serviceOne验证请求结果5.验证ServiceThree包装的接口在浏览器地址栏或者PostMan中请求ServiceThree的两个接口地址。①http://127.0.0.1:8003/serviceThree_toOne验证请求结果 如上图所示其内部成功的调用了ServiceOne提供的接口。②http://127.0.0.1:8003/serviceThree_toTwo验证请求结果 如上图所示其内部成功的调用了ServiceTwo提供的接口。Ribbon-负载均衡Ribbon简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说Ribbon是Netflix发布的开源项目主要功能是提供客户端的软件负载均衡算法将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时重试等。简单的说就是在配置文件中列出Load Balancer简称LB后面所有的机器Ribbon会自动的帮助你基于某种规则如简单轮询随机连接等去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。 LB即负载均衡(Load Balance)在微服务或分布式集群中经常用的一种应用。 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上从而达到系统的HA。 常见的负载均衡有软件NginxLVS硬件 F5等。 相应的在中间件例如dubbo和SpringCloud中均给我们提供了负载均衡SpringCloud的负载均衡算法可以自定义。Ribbon在工作时分成两步 第一步先选择 EurekaServer ,它优先选择在同一个区域内负载较少的server. 第二步再根据用户指定的策略在从server取到的服务注册列表中选择一个地址。 其中Ribbon提供了多种策略比如轮询、随机和根据响应时间加权。Ribbon代码编写模仿ServiceOne子项目“复制”出ServiceOneCopy子项目 在上面eureka项目中把service1的项目复制一下取名ServiceOneCopy.ServiceOneCopy的作用是对ServiceOne提供的业务进行分流因此我们把ServiceOne中的所有内容全部复制到新项目中一份包括pom.xml、application.yml、SpringBoot应用主类“ServiceOneApplication”和业务控制器“ServiceOneController”然后再做接下来的修改。修改application.ymlServiceOne中也作了说明由于在ServiceThree中开启了ribbon负载均衡后需要通过ServiceOne的“应用名称”而不是IP端口号访问业务接口因此我们要把需要负载均衡的业务模块其应用名称保持一致注意改下端口改成8004修改SpringBoot应用主类名称在idea中直接运行项目时会按主类的名称作为SpringBoot启动栏目的名称因此我们需要把主类名称修改一下我们修改为“ServiceOneCopyApplication”。修改业务接口的响应结果我们要分流ServiceOne的业务方法“serviceOne”因此方法本身不能做改变方法名、参数、返回结果格式但为了验证分流的结果我们在返回的响应结果中增加了“copy”字样文字http://127.0.0.1:8004/serviceOnehttp://127.0.0.1:8000/修改ServiceThree子项目我们需要在ServiceThree中开启ribbon的负载均衡功能由于ribbon依赖包已被Eureka引用因此我们无需引入任何新依赖包所以不需要修改pom.xml文件。application.yml文件也不做任何修改。下面对需要修改的两处进行说明修改SpringBoot应用主类提供负载均衡能力我们在“ServiceThreeApplication”主类中给RestTemplate的Bean方法上添加LoadBalanced注解给RestTemplate对象开启ribbon负载均衡能力。之后RestTemplate发送请求时就会自动进行请求的分流。修改请求其他内部业务接口的调用方式由于需要对某一业务接口“负载均衡”那么我们就不能再使用原先的IP端口号的方式调用了否则还是会把请求指定到一个部署的服务中。ribbon的负载均衡是通过使用“应用程序名”来代替IP端口号来调用业务接口的。因此我们需要在控制器中修改调用ServieOne的业务接口方式从http://127.0.0.1:8001/serviceOne修改为http://service-one/serviceOne结果验证按顺序启动各个子项目先启动EurekaService子项目它是Eureka服务器其他子模块都需作为Eureka客户端在它上面进行注册再启动ServiceOne、ServiceOneCopy、ServiceTwo和ServiceThree启动后如下图进入Eureka服务状态页面查看服务注册情况在谷歌浏览器中输入http://127.0.0.1:8000/进入Eureka服务页面我们主要查看当前注册情况如上图所示名为“service-one”的微服务在Eureka中注册数量为2一个是ServiceOne启动的实例、另一个是ServiceOneCopy启动的实例。验证ServiceThree的接口验证负载均衡情况在浏览器地址栏或者PostMan中重复请求ServiceThree的接口地址http://127.0.0.1:8003/serviceThree_toOne第一次调用第二次调用 如上图所示其内部成功的调用了ServiceOne提供的接口并负载均衡分流至了两个模块参考文章https://blog.csdn.net/weixin_45701868/article/details/125738876
http://www.w-s-a.com/news/154451/

相关文章:

  • 曲阜网站建设百度开户现货黄金什么网站可以做直播
  • 比较好的企业建站平台小程序开发外包该注意些什么
  • 建行官网官网网站吗二次元风格wordpress模板
  • 怎样开通自己的网站网址导航哪个主页最好
  • 大良o2o网站建设详情页设计说明怎么写
  • 您与此网站之间建立的连接不安全汽车cms系统是什么意思
  • 有没有做logo的网站企业网站的内容营销
  • 哈尔滨做企业网站怎么做网站自动响应
  • 网站建设硬件和软件技术环境配置签约做网站模板
  • 教育网站建设的素材手机app制作流程
  • 免费行情软件网站大全下载网站备案查询
  • flex网站模板wordpress实时预览
  • 建设银行网站模板为什么企业要建设自己的企业文化
  • 网站建设必知免费手机网站建站系统
  • ssh可以做wap网站么嘉兴seo排名
  • 站内优化包括哪些帝国做企业网站
  • 做网站seo赚钱吗网络维护和故障维修
  • 企业网站可以自己做摄影网站开发背景怎么写
  • 网站百度指数seo最好的工具
  • 宝安专业网站建设推荐设计感强的网站
  • 网站建设 6万元北京知名的品牌设计公司
  • 网站建设的总体需求是什么vmware 下wordpress
  • 光谷网站建设请检查网络
  • 申请建设网站的报告书商务网站开发课程体会
  • 网站开发实训总结致谢群晖wordpress设置
  • 关于酒店网站建设的摘要天津市建设工程信息网官网首页
  • 网站alexa排名查询手机网站制作器
  • 建设小辣猫的网站电子毕业设计网站建设
  • 询广西南宁网站运营礼品定制
  • 建筑公司网站作用免费查看招标信息的网站