java获取某个指定的包或类路径下所有方法的名字 由于公司业务,需要检查某个项目下controller包下所有Controller类的全部方法名,以便判断是否所有的方法都可以被事务和权限的拦截器拦截。并且需要找出没有被拦截到的方法名,以便进行归类,然后配置到拦截器中。
SpringCloud学习笔记 - 分布式系统全局事务管理 - Seata1.5.2+Nacos+OpenFeign 由于业务和技术的发展,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel 默认的的流控规则是配置在sentinel中的,又因为sentinel是懒加载的,只有当我们访问了一个请求的时候,sentinel才能监控到我们的簇点链路,我们才能对该链路进行流控配置,一旦我们重启应用sentinel将会丢失我们的监控链路,sentinel规则也将会消失,这样对我们的生产服务器的重新部署是非常不友好的。我们知道nacos中是内置了一个轻量化的数据库的,我们就可以将我们的流控规则通过一种方式配置在nacos中的,只要Nacos里面的配置不删除,sentinel上的流控规则就持续有效。
SpringCloud学习笔记 - @SentinelResource的fallback&blockHandler配置详解 - sentinel 也就是说会优先处理服务限流,保证高可用,不要卡死服务器。http://localhost:84/consumer/fallback/5,在没有降级处理的时候会直接报错,添加了fallback后进入降级处理方法。访问 http://localhost:84/consumer/paymentSQL/2,此时将9003服务提供者断开,84消费侧自动降级,不会被耗死。访问 http://localhost:84/consumer/fallback/1,多次访问,通过观察端口号可以发现,对支付服务进行了轮询访问。
SpringCloud学习笔记 - 自定义及解耦降级处理方法 - Sentinel 这时我们就需要定义自己的降级处理类,将我们自定义的降级处理方法放在一个统一的类中进行管理,从而将降级方法抽象出来,以便之后的方法复用,并且实现降级处理方法和现有业务逻辑代码的解耦
SpringCloud学习笔记 - 系统自适应限流 - Sentinel Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。我们把系统处理请求的过程想象为一个水管,到来的请求是往这个水管灌水,当系统处理顺畅的时候,请求不需要排队,直接从水管中穿过,这个请求的RT是最短的;系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。
SpringCloud学习笔记 - 热点参数限流 - Sentinel 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top N 数据,并对其访问进行限制。比如:* 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制* 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
SpringCloud学习笔记 - 熔断降级 - Sentinel 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。
SpringCloud学习笔记 - 流控规则 - Sentinel 这里的流控指的是“流量控制”,进一步解释说明:资源名:唯一名称,默认请求路径。针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)。QPS(每秒钟的请求数量)︰当调用该API的QPS达到阈值的时候,进行限流。线程数:当调用该API的线程数达到阈值的时候,进行限流。是否集群:不需要集群直接:API达到限流条件时,直接限流关联:当关联的资源达到阈值时,就限流当前资源。
SpringCloud学习笔记 - Sentinel概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。简而言之,sentinel就是为了做微服务的服务熔断、服务降级、服务限流、服务调用雪崩的,和Hystrix具有异曲同工之妙。
SpringCloud学习笔记 - Nacos配置中心搭建 - Nacos Config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
SpringCloud学习笔记 - Nacos服务注册中心 - Nacos Discovery Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
SpringCloud学习笔记 -Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。诞生:2018.10.31,Spring Cloud Alibaba 正式入驻了Spring Cloud官方孵化器,并
SpringCloud学习笔记 - 链路监控 - SpringCloud Sleuth 在微服务框架中,一个由客户端发起的请求,在后端系统中会调用多个不同的的服务节点,来协同产生最后的响应结果,因此每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误时都会引起整个请求最后的失败。因此就需要一个能够跟踪我们发出的请求调用了哪些服务,哪些服务出现了问题的组件,这时Sleuth就应运而生Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
SpringCloud学习笔记 - 消息驱动 - Spring Cloud Stream 什么是Spring Cloud Stream?官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者 outputs 来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream 的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。