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

外贸响应式网站设计ucloud网站开发

外贸响应式网站设计,ucloud网站开发,自媒体运营怎么学,网站后台放在哪里前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 目录 前言 通过代码实现限流 定义资源 通过代码定义资源 通过注解方式定义资源 定义限流规则 通过… 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 目录 前言 通过代码实现限流 定义资源 通过代码定义资源 通过注解方式定义资源 定义限流规则 通过控制台实现限流 下载并运行Sentinel控制台 在程序中加入并配置 Sentinel 设置规则 新增限流规则 前言 限流的目的是通过对并发访问/请求进行限速或者对一个时间窗口内的请求进行限速来保护系统一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理 Sentinel是阿里中间件团队开源的面向分布式服务架构的轻量级高可用流量控制组件主要以流量为切入点从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 在 Sentinel 中实现限流的方法有以下两种 通过代码方法实现限流。通过 Sentinel 控制台设置实现限流。 接下来我们讲解以上两种方式形式如何实现限流保护 通过代码实现限流 通过代码实现限流需要以下两步方可实现 定义资源定义限流规则 定义资源 定义资源可以通过代码方式或注解方式来实现具体实现如下。 通过代码定义资源 可以通过代码的的方式 SphU.entry(resourceName) 来定义资源具体实现代码如下 RequestMapping(/getuser) public String getUser() {try (Entry entry SphU.entry(getuser)) {// 被保护逻辑return User;} catch (Exception e) {// 限流之后的业务逻辑return 限流;} }PSSphU 是 Sentinel Protection Hotspot Util 的缩写Sentinel 热点保护工具类。 通过注解方式定义资源 通过注解 SentinelResource 也可以实现资源的定义如下代码所示 // 定义资源和限流后触发的方法 SentinelResource(value resourceName, blockHandler myBlockHandler) RequestMapping(/getnamebyid) public String getNameById(Integer id) { return id -lei; } // 限流后触发的方法 public String myBlockHandler(Integer id, BlockException blockException) {String msg Do myBlockHandler method.;System.out.println(msg);return msg; }其中value 属性定义的资源名称blockHandler 定义的是原方法被限流/降级/系统保护之后执行的方法。 注意事项 定义的限流方法 myBlockHandler 必须和原方法的返回值、参数保持一致否则会报错(Sentinel通过反射调用的限流方法)限流方法必须添加 BlockException 参数不然会因为找不到合适的限流后执行方法而提示报错 SentinelResource 注解属性说明 value资源名称必需项不能为空。entryType资源调用的流量类型入口流量EntryType.IN和出口流量EntryType.OUT注意系统规则只对 IN 生效。blockHandler/blockHandlerClass: 限流和熔断时执行 BlockException 所对应的方法名。fallback/fallbackClass非 BlockException 时其他非限流、非熔断时异常对应的方法。exceptionsToIgnore用于指定哪些异常被排除掉不会计入异常统计中也不会进入 fallback 逻辑中而是会原样抛出。 注1.6.0 之前的版本 fallback 函数只针对熔断降级异常DegradeException进行处理不能针对业务异常进行处理。 定义限流规则 在 Spring Boot 项目中只需要将限流规则添加到项目启动时执行即可如下代码所示 public static void main(String[] args) {SpringApplication.run(SentinelDemoApplication.class, args);// 加载限流规则initFlowRules(); }而限流规则定义如下 private static void initFlowRules() {ListFlowRule rules new ArrayList();FlowRule rule new FlowRule();rule.setResource(resourceName); // 资源名称rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 根据 QPS 限流rule.setCount(1); // QPS 阈值【每秒只允许通过一个请求】rule.setStrategy(RuleConstant.STRATEGY_DIRECT); // 调用关系限流策略【非必须设置】rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT); // 流控效果【非必须设置】rule.setClusterMode(false); // 是否集群限流【非必须设置默认非集群】rules.add(rule);FlowRuleManager.loadRules(rules); }其中 setStrategy设置调用关系限流策略包含的值有 直接RuleConstant.STRATEGY_DIRECT【默认值】链路RuleConstant.STRATEGY_RELATE关联RuleConstant.STRATEGY_CHAINsetControlBehavior设置流控效果包含的值有 直接拒绝RuleConstant.CONTROL_BEHAVIOR_DEFAULT【默认值】冷启动RuleConstant.CONTROL_BEHAVIOR_WARM_UP匀速启动RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER冷启动匀速启动RuleConstant.CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER 通过控制台实现限流 Sentinel 还可以使用控制台的方式进行限流这样子可以减少对原项目代码的入侵不过默认情况下限流规则是保存在内存中所以重启之后规则会丢失默认情况下下的推送流程如下 它的实现步骤如下 下载并运行 Sentinel Dashboard控制台。在程序中加入并配置 Sentinel Dashboard。在 Sentinel Dashboard 配置限流/熔断等规则。验证效果。 下载并运行Sentinel控制台 我们可以从 Sentinel 官方仓库下载最新版本的控制台 jar 包访问地址github.com/sentinel 使用如下命令启动控制台 java -jar sentinel-dashboard.jar --server.port18080 从 Sentinel 1.6.0 起Sentinel 控制台引入基本的登录功能默认用户名和密码都是 sentinel。可以参考 鉴权模块文档 配置用户名和密码命令如下 java -Dserver.port18080 -Dsentinel.dashboard.auth.usernamesentinel -Dsentinel.dashboard.auth.password123456 -jar sentinel-dashboard.jar Sentinel 控制台启动时的可选配置项 配置项默认值描述server.port8080指定端口csp.sentinel.dashboard.serverlocalhost:8080指定地址project.name-指定程序的名称sentinel.dashboard.auth.usernamesentinelDashboard 登录账号需要版本1.6sentinel.dashboard.auth.passwordsentinelDashboard 登录密码需要版本1.6server.servlet.session.timeout30分钟登录 Session 过期时间需要版本1.6配置为 7200 表示 7200 秒配置为 60m 表示 60 分钟 在程序中加入并配置 Sentinel 在需要进行流控的项目中加入 Sentinel 依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency在项目中配置 Sentinel Dashboard 地址 spring:application:name: sentinel-dashboard-democloud:sentinel:transport:dashboard: localhost:18080client-ip: 127.0.0.1 port: 8721heartbeat-interval-ms: 10000其中只有 dashboard 是必输项其他的都可以省略他们的含义如下 dashboardsentinel 控制台地址。client-ip当前客户端 IP不设置自动选择一个 IP 注册。port与 sentinel 通讯的端口如不设置会从 8719 开始扫描依次 1直到找到未被占用的接口。heartbeat-interval-ms心跳发送周期默认值是 10s。 设置规则 新增限流规则 参数说明 针对来源Sentinel 可以针对调用者进行限流填写具体微服务名时指定对此微服务进行限流 默认值为 default不区分来源全部限制。阈值类型/单机阈值用于限制和控制流量的一种度量标准的类型可以为 QPSQueries Per Second每秒请求数也可以为“并发线程数”。 QPS每秒请求达到此值开始限流。并发线程数请求此资源的线程达到某个值时限流。每个请求分配一个线程当请求执行时间长时很快就会触发限流相反如果线程执行速度快那么限流触发就会概率就会比较小。流控模式流量控制模式。 直接接口达到限流条件时直接限流。关联当关联的资源达到阈值时就限流自己。链路指定资源从入口资源进来的流量如果达到阈值就进行限流。流控效果流量控制效果。 快速失败该方式是默认的流量控制方式比如 QPS 超过任意规则的阈值后新的请求就会被立即拒绝拒绝方式为抛出 FlowException。这种方式适用于对系统处理能力确切已知的情况下比如通过压测确定了系统的准确水位时。排队等待也叫匀速通过排队等待会严格控制请求通过的间隔时间让请求稳定且匀速的通过可以用来处理间隔性突发的高流量。例如抢票软件在某一秒或者一分钟内有大量的请求到来而接下来的一段时间里处于空闲状态我们希望系统能够在接下来的空余时间里也能出去这些请求而不是直接拒绝。在设置排队等待时需要填写超时时间。Warm Up此项叫做预热或者冷启动方式此模式主要是防止流量突然增加时直接把系统拉升到高水位可能瞬间把系统压垮通过冷启动让通过的流量缓慢增加在一定时间内逐渐增加到阈值上限给冷系统一个预热的时间避免冷系统被压垮。当使用 Warm Up 模式时我们还需要指定启动时开放的 QPS 比例DEFAULT_COLD_FACTOR默认值为 3代表 30%以及系统预热所需时长warmUpPeriodSec默认值是 10 秒。 限流页面当“是否集群”选中之后就会是这样的界面 其中最后一项“失败退化”中的 Token Server 含义如下 Token Server 是 Sentinel 用于集群流量控制的关键组件它负责分发令牌并进行流量控制。当 Sentinel 的应用程序配置为集群限流模式时它会向 Token Server 请求令牌然后根据令牌情况来进行流量控制。如果 Token Server 不可用可能是由于网络故障、Token Server 实例崩溃等原因这时候无法从 Token Server 获取令牌。 Token Server 配置的含义如下 当配置选项为是时表示当 Token Server 不可用时Sentinel 会自动切换为单机限流模式。在单机限流模式中Sentine 会从本地的限流规则进行流量控制不再依赖 Token Server。这样可以保证即使 Token Server 不可用也能够继续对流量进行限制。当配置选项为否时表示当 Token Server 不可用时Sentinel 不会自动切换为单机限流模式流量控制会被暂停即无法进行限流可能会导致服务负载过高。 自定义限流错误信息 当请求被限流后返回的响应信息往往不是很友好我们这里统一处理返回异常信息实现BlockExceptionHandler接口 Configuration public class MySentinelConfig implements BlockExceptionHandler {Overridepublic void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception {// BlockException 异常接口其子类为Sentinel五种规则异常的实现类// AuthorityException 授权异常// DegradeException 降级异常// FlowException 限流异常// ParamFlowException 参数限流异常// SystemBlockException 系统负载异常String msg null;if (e instanceof FlowException) {msg 限流;} else if (e instanceof DegradeException) {msg 降级;} else if (e instanceof ParamFlowException) {msg 热点参数限流;} else if (e instanceof SystemBlockException) {msg 系统规则负载/...不满足要求;} else if (e instanceof AuthorityException) {msg 授权规则不通过;}R error R.error(500, msg);response.setCharacterEncoding(UTF-8);response.setContentType(application/json);response.getWriter().write(JSON.toJSONString(error));} }测试  当访问超出阈值时响应返回自定义错误信息 {msg:限流,code:500} 总结 本篇文章主要介绍了Sentinel的两种实现限流的方式除此之外当然还有许多功能与限流规则这里由于篇幅问题就不一一介绍了有兴趣的朋友可以自己探索一下。我个人觉得Sentinel是一个非常优秀的组件比原来用的Hystrix的确有着非常大的改进值得推荐。
http://www.zqtcl.cn/news/593623/

相关文章:

  • 做网站广告语网站注册建设
  • 仓山福州网站建设哪个是网站建设里面的
  • 开网站流程开发公司起名
  • 免费建站优化网站基本设置
  • 网站建设需要上传数据库吗seo自己做网站吗
  • 网站制作ppt杭州网站的特点
  • 美丽寮步网站建设价钱杭州网站设计询问蓝韵网络
  • 毕节网站建设公司网站职业技术培训学校
  • 果洛wap网站建设比较好17岁在线观看免费高清完整版
  • 一级a做爰片在线看免播放器网站一个网站突然打不开
  • 聊城网站开发培训wordpress实时预览载入中
  • 网站设计文章国际转运网站建设
  • 南充市建设厅官方网站购物网站设计说明
  • 防疫网站网页设计wordpress不同侧边栏
  • 网站的建设多少钱长春市招标建设信息网
  • 网站加速代码百度浏览器app
  • 关于配色的网站企业宣传册文案范文
  • 免费推广网站教程湖南中核建设工程公司官方网站
  • 莱阳网站建设公司彩票类网站是如何做代理的
  • 食品公司网站建设广州做网站制作公司
  • 网站上传服务器教程搜索网站存在的关键字
  • 天河建设网站多少钱网络公司网站样本
  • 做的精美的门户网站推荐附近编程培训机构
  • 台州黄岩做网站太原网站建设王道下拉惠
  • 深圳设计网站公司互联网服务平台投诉中心
  • 做seo网站优化哪家强济南网站建设公司排名
  • tp5网站文档归档怎么做手机虚拟机哪个好用
  • 网站建设公司的业务范围万网做网站多少钱
  • 做网站要用写接口6wordpress 汽车租赁
  • 网站开发方向paypal账号注册