springcloudAlibaba实战使用
文章平均质量分 78
实战使用
胡尚
只要学不死就往死里学
展开
-
SkyWalking集成日志框架、告警、高可用集群搭建
由于是Web层面的,所以当事件发生时,回调的不再是代码中的方法或函数,而是服务接口。SkyWalking集群是将SkyWalkingoap作为一个服务注册到nacos中,只要SkyWalkingoap服务没有全部宕机,至少保证有一个SkyWalkingoap在运行,就能进行跟踪。将微服务的日志框架去集成SkyWalking,我们希望在我们微服务中日志中,能够记录当前调用链路的id,然后我们再根据这个id去SkyWalking的前端界面中进行搜索找到对应的调用链路记录。...原创 2022-07-19 09:15:35 · 3069 阅读 · 0 评论 -
SkyWalking自定义链路追踪、性能剖析
如果想要业务方法也实现链路追踪,就可以使用自定义链路追踪。如下图所示,我启动了gateway+order+stack三个服务拓补图追踪菜单从上图中的追踪菜单的右边可以看到,这里仅仅显示了controller层的请求路径url,没有显示service层的业务方法。第一步,在微服务中导入依赖...原创 2022-07-19 09:15:10 · 2242 阅读 · 0 评论 -
SkyWalking服务端的搭建、微服务接入SkyWalking
skyWalking是一个国产开源框架,2015年开源,2017年假如Apache孵化器。skyWalking是分布式系统的应用程序性能监视工具,专门为微服务、云原生架构和基于容器(Docker、k8s、mesos)架构而设计。包括了分布式追踪、性能指标分析、应用和服务依赖分析等。官网下载链接Github文档中文文档链路追踪框架对比Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloudsleuth得到了广泛的应用,特点是轻量,部署简单。PinpointSkywalking。...原创 2022-07-19 09:14:46 · 4683 阅读 · 0 评论 -
Gateway整合Sentinel实现对路由的限流规则
在限流或者熔断后,我们肯定不能直接返回这个异常给前端,接下来就进行自定义异常返回结果在Gateway网关服务中添加一个配置类/**自定义异常处理*@Author胡尚*@Date50//1.创建一个BlockRequestHandler对象,它是一个接口,所以就需要匿名内部类BlockRequestHandlerblockRequestHandler=newBlockRequestHandler(){springcloud。...原创 2022-07-19 09:14:23 · 2403 阅读 · 4 评论 -
Gateway路由断言工厂、过滤器工厂、跨域处理
内置路由断言工厂已经能够满足日常大部分的业务需求了,但是如果出现了某些业务场景无法满足的情况就需要进行自定义路由断言工厂了。自定义路由断言工厂需要继承类,重写apply()方法的逻辑。在apply()方法中可以通过拿到对象,从而可以获取到请求参数、请求方式、请求头等信息。注意必须注册进spring容器中类的命名需要以结尾就拿类来举例,底层会使用反射,通过yaml配置文件中这里设置的Query然后去拼接,最终找到源码中的类需要继承.serverportnamegatewayroutes。...原创 2022-07-19 09:13:58 · 1277 阅读 · 0 评论 -
Gateway路由服务的创建
上面快速入门小节中,在配置文件中将转发路径的地址写死了,这样是会有很多难以维护的问题的,就比如服务器迁移更换了ip、服务搭建了集群还需要中间层来进行负载均衡…导入依赖,gateway是SpringCloud官方开发的,所以我们需要保证父maven项目中添加好了SpringCloud的版本管理器。当然,在日常开发中,这种方式不太会用,更多的还是使用配置路由的方式,代码的阅读性更好,也更加灵活。,它会自动根据服务名去注册中心中寻找该服务的远程地址,并且还会自动去掉uri中服务名这一级。nacos的服务列表。..原创 2022-07-18 09:09:44 · 362 阅读 · 0 评论 -
分布式事务之Seata详解
seata的总体执行流程事务管理器TM请求事务协调者TC开启一个全局事务,TC生成一个XID作为全局事务的唯一标识,XID会在微服务的调用链路中进行传输,通过XID来保证各个子事务关联资源管理器RM请求TC将本地事务注册为全局事务的分支事务,通过XID进行关联事务参与者解析要执行的业务SQL查询修改前的数据,并存储在beforeimage快照中执行业务SQL,入库,并添加行锁查询修改后的数据,并存储在afterimage中httpshttpshttpshttps。............原创 2022-07-18 09:07:28 · 1147 阅读 · 0 评论 -
分布式事务之二阶段提交、AT模式、TCC模式
协调者在prepare阶段中请求发出后,等待响应,如果有参与者宕机或者协调者之间的网络中断,都会导致协调者无法收到参与者的响应,协调者会等待一段时间,然后超时,再触发事务中断,这个过程中,协调者和所有参与者都是处于阻塞的。分布式事务操作失败,事务管理器TM向事务协调者TC发送回滚请求,资源管理器RM收到事务协调器TC发来的回滚请求,通过XID和BranchID找到相应的回滚日志记录,通过回滚记录生成反向的更新sql并执行,以完成分支的回滚。基于TCC模式我们可以保证子事务的同时成功或同时失败。......原创 2022-07-18 09:06:38 · 2612 阅读 · 1 评论 -
Sentinel容错规则持久化
这种方式的缺点就是只能在配置中心当中使用配置文件来设置,就和最刚开始我们使用java代码一样,这里如果我们在sentinel控制台进行修改规则它是不会同步更新到nacos配置中心的,也就是说即使我们在sentinel控制台修改了规则,微服务一重启就又变成了刚开始从nacos配置中心读取的规则了。生产环境建议使用这种模式,结合配置中心来实现持久化,推送的操作不应有Sentinel客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅复制获取配置中心推送的配置并更新到本地。类,还有一些配置在父类中。..原创 2022-07-18 09:06:04 · 143 阅读 · 0 评论 -
Sentinel部署、微服务使用sentinel整合springcloud alibaba、sentinel控制台详解
我们现在在代码中写了一些资源的服务容错规则,所以现在这些菜单中就会有我们配置的内容,到时候和SpringCloudAlibaba整合之后,刚进来肯定是没有的,我们需要为每一个资源设置对应的规则,还有就是我们结合SpringCloudAlibaba之后,我们在控制台配置了规则之后,各个微服务重启之后,我们配置的东西也就消失了。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。...原创 2022-07-18 09:05:41 · 2304 阅读 · 0 评论 -
Sentinel使用代码实现流控熔断降级规则
Sentinel支持通过注解定义资源并配置和fallback函数来进行限流之后的处理。//原本的业务方法.@SentinelResource(blockHandler="blockHandlerForGetUser")publicUsergetUserById(Stringid){注意函数会在原方法被限流/降级/系统保护的时候调用,而fallback函数会针对所有类型的异常。请注意和fallback函数的形式要求,更多指引可以参见Sentinel注解支持文档。注解来改善这个问题。......原创 2022-07-18 09:05:11 · 1290 阅读 · 0 评论 -
Sentinel理论知识与介绍
在微服务架构中,我们可以在服务消费方设置一个熔断机制,当我们去调用一个服务提供者持续未响应或异常的时候,我们就可以针对这个服务进行熔断,停止调用这个服务提供者。比如下图中秒杀的调用链中,积分服务不可用了,大量的请求堆积在商品服务,拖垮了商品服务,然后最终导致整个调用链路不可用。线程隔离用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,则会进行服务降级。服务雪崩因服务提供者的不可用,导致服务调用者的不可用,并将不可用逐渐方法的过程,就叫服务雪崩。.........原创 2022-07-18 09:04:43 · 368 阅读 · 0 评论 -
Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
很多时候我们还会引入一些其他的配置文件,就不能使用服务名来引入默认的配置文件了。这个时候就需要指定Dataid有两种方式,原创 2022-07-18 09:04:22 · 6226 阅读 · 0 评论 -
Feign详解,日志配置+契约设置+超时时间+自定义拦截器
我们可以在服务消费方调用服务提供方的时候,定义一些拦截器,就比如记录一些日志、或者是在请求头中加一些参数来做认证授权我们需要创建一个类,实现接口,重写接口中的apply()方法。/**自定义拦截器*@Author胡尚*@Date53log.info("我们可以每一次调用的时候都打印一些日志信息!");//还可以添加请求头信息requestTemplate.header("Author","aabbccddee");/**运行结果如下feignhttps。...原创 2022-07-18 09:03:53 · 963 阅读 · 0 评论 -
使用LoadBalancer替换Ribbon负载均衡器
但是目前是没有办法去替代Ribbon的。还需要把SpringCloud中的ribbon禁用掉,因为早期SpringCloud是没有负载均衡器的标准的,它把ribbon当做它的标准,所以之前版本的SpringCloud默认使用的负载均衡器ribbon,我们现在就需要禁用掉。SpringCloud在早期是把Ribbon当做它的负载均衡器,在SpringCloud2021版的时候就移除了Ribbon,改用Loadbalancer为默认的负载均衡器。剔除ribbon依赖,引入LoadBalancer的依赖。....原创 2022-07-18 09:03:16 · 2229 阅读 · 0 评论 -
Ribbon修改默认负载均衡策略
如果要使用自定义的负载均算法,一般就自己创建一个类,然后继承AbstractLoadBalancerRule抽象类,然后写相应的负载均衡逻辑。最后再使用上面的两种方法,要么在配置类中创建该对象并注册进容器,要么在yml文件中指定全路径。注解并写在主启动类能够进行包扫描的范围中,那么调用其他微服务,一律使用这一种负载均衡算法。当然也可以写在主启动所在包的外面。然后在主启动类中指定调用某些服务的时候使用我们配置的负载均衡算法。修改的这种负载均衡算法是使用nacos设置的权重方式。...原创 2022-07-17 10:28:48 · 1713 阅读 · 1 评论 -
Ribbon负载均衡策略
权重策略,每30秒计算一次服务器响应时间,以响应时间作为权重,响应时间越短的服务器被选中的概率越大。这里的权重和我们上面Nacos管理平台上面设置的权重是两个不同的值,不是说使用了这种负载策略就会用上我们之前在Nacos设置的权重值,这里的权重值是根据服务器响应时间来确定的。默认规则,它是基于服务所在区域和服务的可用性来选择,如果我们没有区域的概念就会继续采用轮询的方式来进行。重试测试,会先按照轮询获取服务,如果服务获取失败则会在指定的时间内进行重试,直到请求到可用的服务为止。...原创 2022-07-17 10:26:39 · 455 阅读 · 0 评论 -
Nacos中使用ribbon
它会自动引入ribbon的依赖,不需要我们在手动引入。原创 2022-07-17 10:25:08 · 1774 阅读 · 0 评论 -
nacos集群搭建
这是因为nacos默认的数据源是使用的内置数据源,是存在内存中的,那么我们启动nacos集群的时候内存中的数据肯定就不能共享了,到时候我们的数据进行注册的话就会注册到各自的Nacos服务器中,这也就会造成数据不一致。我们首先需要安装好数据库,然后创建一个数据库,然后执行安装包中提供的sql脚本,这个sql脚本只是一些建表语句,所以需要我们先创建一个数据库,需要注意mysql需要使用5.7+以上的版本,如果用低版本的mysql在执行sql脚本的时候可能会报错。现在随便访问一个nacos的管理界面都可以看到。.原创 2022-07-17 10:21:15 · 16000 阅读 · 0 评论 -
Nacos Client常用配置
下面的这些配置是我们目前已经使用了的。还有一些其他的,如下所示。原创 2022-07-17 10:12:54 · 1987 阅读 · 0 评论 -
Nacos管理界面详细介绍
我们可以按照服务名称或在是分组名称进行搜索,后面的隐藏空服务意思是我们可以创建一个空服务,这个空服务暂时没有任意一个实例,它就只是创建了,占了一个位置等待NacosClient来进行注册。和不健康的实例,默认在5秒之后Nacos注册中心还没有收到某个实例的心跳就认为这是一个不健康的实例,当30秒还没有收到心跳就把这个服务实例剔除掉。如果我们点击了下线按钮,那么服务调用方获取服务列表的时候就不会将下线了的服务给服务调用方,服务调用方也就不会来调用这个点击下线按钮了的服务了。来进行分割,没有明确的规定。...原创 2022-07-17 10:08:59 · 7338 阅读 · 1 评论 -
NacosClient客户端搭建,微服务注册进nacos
然后就能调用通过了,这是因为Nacos本身是没有办法解析服务名称对应的解析地址,需要依靠负载均衡器来解析根据服务名称解析地址,然后再去进行调用。这是因为,服务从Nacos注册中心中获取服务列表之后,还需要负载均衡器来进行服务调用,就如下图所示的一样。然后启动服务,登录到Nacos的管理界面就可以发现现在服务已经注册进去了。,Nacos也其实是集成了Ribbon,注解了,如果是以前的低版本就还需要加。,可以去maven的中央仓库中去查询。启动服务的时候就会发现报错了。文件中进行相应的配置。......原创 2022-07-17 09:46:27 · 859 阅读 · 1 评论 -
Nacos服务部署安装
目前我们所使用的SpringCloudAlibaba的版本是2.2.5,所以Nacos就需要下载1.4.1的版本。刚启动就会有一个nocas的启动界面,可以通过下面这个url进行访问Nocas的管理平台。打开hosts文件后,在末尾添加三行,其中的IP地址为前面查询到的地址。首先需要能够让本机访问github,如果本地打不开github,则可以通过。通过输入上图中nacos启动时打印的url访问Nocas管理平台。启动完成后,最后会打印一个success的信息。Nacos默认的启动方式为集群启动,进入。..原创 2022-07-17 09:37:08 · 1482 阅读 · 0 评论 -
主流注册中心的区别
注册中心中一般健康的实例与不健康的实例都会存在里面,我们一般会设置一个阈值,0~1之间的数,比如0.5,服务都是集群的,假如一个服务中超过了50%的实例都不可用了,那么就让所有的实例都不可用,也可以加上服务熔断降级的策略。CP一般就是主从架构,主节点实时同步数据至从节点,但如果集群中超过了一半的节点不可用了,那么整个集群都会不可用。AP就是说多个服务,各自注册到不同的注册中心中,这样各个注册中心的数据就不一致了,但是其中一台挂掉了不会印象到另一台。健康检查就是一些传输协议。......原创 2022-07-17 09:30:16 · 138 阅读 · 0 评论 -
注册中心演变过程
注册中心演变过程原创 2022-07-17 09:26:44 · 279 阅读 · 0 评论