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

网站制作过程流程织梦游戏网站源码

网站制作过程流程,织梦游戏网站源码,wordpress文件夹里图片无法获取,郑州发布官网今天#xff0c;我们就使用 Sentinel 实现接口的限流#xff0c;并使用 Feign 整合 Sentinel 实现服务容错的功能#xff0c;让我们体验下微服务使用了服务容错功能的效果。 因为内容仅仅围绕着 SpringCloud Alibaba技术栈展开#xff0c;所以#xff0c;这里我们使用的服…今天我们就使用 Sentinel 实现接口的限流并使用 Feign 整合 Sentinel 实现服务容错的功能让我们体验下微服务使用了服务容错功能的效果。 因为内容仅仅围绕着 SpringCloud Alibaba技术栈展开所以这里我们使用的服务容错组件是阿里开源的 Sentinel。 当然能够实现服务容错功能的组件不仅仅有 Sentinel比如Hystrix 和 Resilience4J 也能够实现服务容错的目的。 1. 关于 Sentinel 随着微服务的流行服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性 1.1 Sentinel 的特征 丰富的应用场景Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景例如秒杀即突发流量控制在系统容量可以承受的范围、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据甚至 500 台以下规模的集群的汇总运行情况。广泛的开源生态Sentinel 提供开箱即用的与其它开源框架/库的整合模块例如与 SpringCloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C 等多语言的原生实现。完善的 SPI 扩展机制Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等 1.2 Sentinel 的主要特性 Sentinel 分为两个部分: 核心库Java 客户端不依赖任何框架/库能够运行于所有 Java 运行时环境同时对 Dubbo /Spring Cloud 等框架也有较好的支持。控制台Dashboard基于 Spring Boot 开发打包后可以直接运行不需要额外的 Tomcat 等应用容器 2. 项目集成 Sentinel 在微服务项目中整合 Sentinel 是非常简单的只需要在项目的 pom.xml 文件中引入 Sentinel 的依赖即可。不过在使用 Sentinel 时需要安装 Sentinel 的控制台 2.1 安装 Sentinel 控制台 Sentinel 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能 2.1.1 下载 sentinel-dashboard 到链接 下载链接 下载 Sentinel 控制台。我这里下载的是 sentinel-dashboard-1.8.5.jar 2.1.2 启动 sentinel-dashboard Sentinel 控制台下载完成后在本地启动 Sentinel 控制台如下所示 java -Dserver.port8888 -Dcsp.sentinel.dashboard.serverlocalhost:8888 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.5.jar 2.1.3 访问 sentinel-dashboard 启动后在浏览器中输入 http://localhost:8888 访问 Sentinel 控制台如下所示 输入默认的用户名 sentinel 和密码 sentinel登录 Sentinel 控制台如下所示 至此Sentinel 控制台下载并启动成功 2.2 项目集成 Sentinel 1、在订单微服务的 shop-orde r的 pom.xml 文件中添加Sentinel的相关依赖如下所示 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency2、在订单微服务的 shop-order 的 application.yml 文中加入 Sentinel 相关的配置如下所示 spring:cloud:sentinel:transport:port: 9999 #指定和Sentinel控制台交互的端口任意指定一个未使用的端口即可dashboard: 127.0.0.1:8888 #Sentinel控制台服务地址3、为了让大家直观的感受到 Sentinel 的功能这里我们先在订单微服务的 OrderController 类中新增一个测试接口如下所示 GetMapping(value /test_sentinel) public String testSentinel(){log.info(测试Sentinel);return sentinel; }4、启动订单微服务在浏览器中输入 http://localhost:8080/order/test_sentinel 访问在订单微服务中新增的接口。 5、刷新 Sentinel 页面会发现已经显示了订单微服务的菜单如下所示 这里注意一下 注意直接启动订单微服务和 Sentinel会发现 Sentinel 中没有订单微服务的数据因为 Sentinel 是懒加载机制所以需要访问一下接口再去访问Sentinel 就有数据了 至此订单微服务成功集成了 Sentinel 2.3 集成 Sentinel 限流功能 对提交订单的接口限流 在提交订单的接口 http://localhost:8080/order/submit_order 上实现限流步骤如下 1、首先访问下提交订单的接口 http://localhost:8080/order/submit_order 使得 Sentinel 中能够捕获到提交订单的接口并点击操作中的 流控 按钮如下所示 2、在新增流控规则显示框中的 QPS 单机阈值设置为 1点击新增按钮如下所示 3、在浏览器中不断刷新 http://localhost:8080/order/submit_order? userId1001productId1001count1 使得每秒访问的频率超过 1 次会被 Sentinel 限流如下所示 至此项目中集成了 Sentinel 并使用 Sentinel 实现了接口的限流。 3. Feign 整合 Sentinel 实现容错 我们之前在项目中集成了 Sentinel并使用Sentinel实现了限流如果订单微服务的下游服务比如用户微服务和商品微服务出现故障无法访问时那订单微服务该如何实现服务容错呢使用Sentinel就可以轻松实现 3.1 添加依赖并开启支持 1、在订单微服务的 shop-order 的 pom.xml 文件中添加 Sentinel 的相关依赖如下所示 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency2、在订单微服务的 application.yml 文件中添加如下配置开启 Feign 对 Sentinel 的支持 feign:sentinel:enabled: true3.2 为远程调用实现容错 需要在订单微服务 shop-order 中为远程调用接口实现容错方法。 1、这里先为用户微服务实现容错。在订单微服务中新建 com.zzc.order.feign.fallback 包并在此包下创建 UserServiceFallBack 类实现 UserService 接口用于调用用户微服务的容错类如下所示 Component public class UserServiceFallBack implements UserService {Overridepublic User getUser(Long uid) {User user new User();user.setId(-1L);return user;}}注意 容错类需要实现一个被容错的接口并实现这个接口的方法 2、指定容错类。在订单微服务的 com.zzc.order.feign.UserService 接口上的 FeignClient 注解上指定容错类如下所示 FeignClient(value server-user, fallback UserServiceFallBack.class) public interface UserService {GetMapping(value /user/get/{uid})User getUser(PathVariable(uid) Long uid);}3、修改订单微服务的业务实现类中提交订单的业务方法如下所示 // ... if (user null){throw new RuntimeException(未获取到用户信息: JSONObject.toJSONString(orderParamVo)); } if (user.getId() -1){throw new RuntimeException(触发了用户微服务的容错逻辑: JSONObject.toJSONString(orderParamVo)); } Product product productService.getProduct(orderParamVo.getProductId()); if (product null){throw new RuntimeException(未获取到商品信息: JSONObject.toJSONString(orderParamVo)); } if (product.getId() -1){throw new RuntimeException(触发了商品微服务的容错逻辑: JSONObject.toJSONString(orderParamVo)); } // ... ResultInteger result productService.updateCount(orderParamVo.getProductId(), orderParamVo.getCount()); if (result.getCode() ! HttpCode.SUCCESS){throw new RuntimeException(库存扣减失败); } if (result.getCode() 1001){throw new RuntimeException(触发了商品微服务的容错逻辑: JSONObject.toJSONString(orderParamVo)); }可以看到修改后的提交订单的业务方法主要增加了服务容错的判断逻辑 至此我们在项目中使用Sentinel实现了服务容错的功能 3.3 测试服务容错 停掉所有的用户微服务和商品微服务也就是只启动订单微服务在浏览器中访问 http://localhost:8080/order/submit_order?userId1001productId1001count1 结果如下所示 当然读者也可以测试只启动用户、订单微服务商品、订单微服务。 返回的原始数据 触发了用户微服务的容错逻辑: {“count”:1,“empty”:false,“productId”:1001,“userId”:1001} 说明项目集成Sentinel成功实现了服务的容错功能 代码地址 代码已经上传至码云码云地址 其中数据库文件位于 db 文件夹下。
http://www.hkea.cn/news/14346855/

相关文章:

  • 做国外衣服的网站扬州建设工程信息网站
  • php网站开发招聘需求wordpress主题设置导出
  • 有什么好的提供外链网站百度关键词广告怎么收费
  • 做网站1万多手机网页设计软件下载
  • 网站建设描述书进了网站的后台系统 怎么改公司的网站
  • 百度网站建设中的自由容器网站建设发展现状
  • 企业平台网站建设wordpress 的主题在哪个文件夹
  • 网站开发资金投入软件开发定制
  • 网站建设郑州软件开发的软件有哪些
  • 做网站一班需要多少钱品牌策划的意义
  • 面向对象网站开发地方购物网站盈利模式
  • 网站开发语言 asp网站流量是怎么赚钱的
  • 石岩附近网站建设公司松江团购做网站
  • 网站开发目的和意义10个神奇的.htaccess技巧(for wordpress)
  • html网站开发开题报告范文企业网站 流程
  • h5网站建设方案预售网站开发
  • 长沙 网站优化wordpress怎么集成码支付
  • 医生在网站上做自我宣传营销的概念是什么
  • 做网站软件frontpage深圳城乡和建设局网站
  • 纸箱手工制作大全网站怎么做seo_
  • 一般建一个外贸网站多少钱企业网站建设合同
  • 提升网站知名度制作软件的工作叫什么
  • 河南网站优化哪家好包头网站优化
  • 舟山专业做网站几年前备案的网站现在网站不在了备案号还在吗
  • 哈尔滨营销网站制作龙口市规划建设局网站
  • 重庆互联网网站建设佛山外贸网站建设
  • 网站上的logo怎么做wordpress 搬家 域名
  • 黑马网站建设老域名做网站好吗
  • 山东省工程建设信息官方网站成都seo推广员
  • 襄阳哪里做网站全国做网站的大公司