![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringCloud
文章平均质量分 80
Blueeyedboy521
Java架构师,微服务,前端Vue,人工智能,C/C++嵌入式编程
展开
-
Feign高级实战-源码分析
Feign 是声明式 Web 服务客户端,它使编写 Web 服务客户端更加容易Feign 不做任何请求处理,通过处理注解相关信息生成 Request,并对调用返回的数据进行解码,从而实现 简化 HTTP API 的开发如果要使用 Feign,需要创建一个接口并对其添加 Feign 相关注解,另外 Feign 还支持可插拔编码器和解码器,致力于打造一个轻量级 HTTP 客户端通过 @EnableFeignCleints 注解启动 Feign Starter 组件。原创 2022-11-23 18:18:59 · 603 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第六章-日志采集
编写logback⽇志配置⽂件。在resources下新建⼀个logback-spring.xml⽂件,根据官⽹⽂档编写配置⽂件,可以写作以下两种。配置项说明:https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/configurations/打开agent/config/agent.config配置文件,添加如下配置信息。重点是设置输出tid,可以在任何位置设置打印。原创 2022-09-14 18:00:00 · 3683 阅读 · 6 评论 -
SpringCloud链路追踪SkyWalking-第五章-性能分析
skywalking的性能分析,在根据服务名称,端点名称(请求url),以及相应的规则建立了任务列表后,在调用次任务列表的端点后。skywalking会自动记录,剖析当前端点,生成剖析结果,可以用来定位具体哪行代码耗时比较长。原创 2022-09-13 18:00:00 · 586 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第四章-自定义链路追踪
如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以使用如下的代码 引入依赖。原创 2022-09-09 20:30:00 · 702 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第二章-部署搭建及高可用
Skywalking集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalking oap在运行,就能进行跟踪。skywalking-oap-server服务启动会暴露11800和12800两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改。启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui:8868。.......原创 2022-08-30 18:30:00 · 1656 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第一章-介绍
Skywalking 是一个优秀的APM(application performance monitor)应用性能监控系统,针对微服务场景设计,可以方便的实现Spring cloud等微服务场景下的性能监控、链路追踪等。而v8.x版本也支持了日志收集功能,可以取代ELK作为分布式下日志收集的方案。一个系统实现 监控+追踪+日志 的多个能力,有效降低微服务下运维的复杂度。...原创 2022-08-25 18:56:24 · 369 阅读 · 0 评论 -
SpringCloud集成链路追踪Sleuth+Zipkin
当一个分布式系统服务多了之后,前端访问接口可能涉及到多个服务调用链路随着服务的越来越多,对调用链的分析会越来越复杂当前端访问接口出现问题的时候,我们如何快速定位是哪个服务出现故障比较麻烦链路追踪的出现正是为了解决这种问题。是Spring Cloud 实现了分布式链路跟踪解决方案。分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。原创 2022-08-24 19:30:00 · 1365 阅读 · 0 评论 -
SpringCloud集成SpringDoc和Swagger3
它将路径重写/v3/api-docs/{SERVICE_NAME}为/{SERVICE_NAME}/v3/api-docs,由另一个负责与nacos发现交互的路由处理。因此,我们在path下有多个OpenAPI资源/v3/api-docs/{SERVICE_NAME},例如/v3/api-docs/org。时,会转发到http//edevp-gateeay8899/auth/v3/api-docs,而根据定义的路由就会请求到edevp-auth服务,由于。,正好跟我们单独访问授权中心的。...原创 2022-07-17 23:34:40 · 4424 阅读 · 7 评论 -
微服务面试篇-Sentinel
线程隔离有两种方式实现:Hystrix默认是基于线程池实现的线程隔离,每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。支持主动超时支持异步调用线程的额外开销比较大低善出轻量级,无额外开销不支持主动超时不支持异步调用高频调用高扇出限流:对应用服务器的请求做限制,避免因过多请求二导致服务器过载甚至宕机。限流算法常见的包括两种:Gateway则采用了基于Re原创 2022-06-21 20:00:00 · 1114 阅读 · 0 评论 -
微服务面试篇-Nacos如何支撑数十万服务注册压力
Nacos内部接收到注册的请求时,不会立即写数据,而是将服务注册的任务放入一个阻塞队列,就立即响应给客户端。然后利用线程池读取阻塞队列中的任务,异步来完成实例更新,从而提高并发写能力。ServiceManagerDistroConsistencyServiceImpl (临时非持久化)com.alibaba.nacos.naming.consistency.ephemeral.distro.DistroConsistencyServiceImpl初始化线程池.........原创 2022-06-20 10:50:38 · 1322 阅读 · 0 评论 -
微服务面试篇-Nacos注册表结构
要了解Nacos的服务注册表结构,需要从两方面入手:github:https://github.com/alibaba/nacos/releases官方文档:https://nacos.io/zh-cn/docs/open-api.htmlNacos通信不是通过http协议,而是通过Protocol协议。protocol buffers(类似于JSON) 是一种与语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效原创 2022-06-20 20:00:00 · 1199 阅读 · 0 评论 -
微服务之分布式事务Seata-第三章-实战(微服务集成seata)
目录版权声明示例导入示例数据表账户表account_tbl库存表storage_tbl代码解读OrderService仓库地址版权声明示例导入示例数据表账户表account_tbl记录用户的账户余额库存表storage_tbl记录商品编号对应的库存代码解读OrderService仓库地址...原创 2022-05-18 20:30:00 · 522 阅读 · 1 评论 -
微服务之分布式事务Seata-第一章-初识
目录版权声明一、事务ACID原则原子性(A)一致性(C)隔离性(I)持久性(D)总结二、理论基础1、CAP理论CAP定理- Consistency (一致性)CAP定理- Availability(可用性)CAP定理-Partition tolerance(分区)2、BASE理论三、分布式事务Seata1、初识seata2、Seata架构Seata事务管理中有三个重要的角色:Seata提供了四种不同的分布式事务解决方案:分布式服务案例版权声明部分内容参考CSDN博主「机智兵」的原创文章,原文链接:htt原创 2022-05-17 16:54:10 · 297 阅读 · 0 评论 -
微服务之分布式事务Seata-第二章-安装seata
目录版权声明1、下载2、解压3、修改配置文件4、 在nacos添加配置5、创建数据库表6、启动TC服务版权声明部分内容参考CSDN博主「机智兵」的原创文章,原文链接:【微服务】(十五)—— Seata 的部署和集成1、下载首先我们要下载seata-server包,地址在http://seata.io/zh-cn/blog/download.html点击下载:seata-server-1.4.2.zip2、解压3、修改配置文件修改conf目录下的registry.conf文件,先备份一份原创 2022-05-17 15:54:14 · 557 阅读 · 0 评论 -
微服务之Sentinel-第六章-规则持久化(sentinel-1.8.4持久化)
目录一、修改order-service服务1、引入依赖2、配置nacos地址二、修改sentinel-dashboard源码1、 下载2、解压3、修改nacos依赖4、添加nacos支持5、修改nacos地址6、配置nacos数据源7、修改前端页面8、重新编译、打包项目9、启动启动方式跟官方一样:如果要修改nacos地址,需要添加参数:如果要修改nacos地址,并制定用户密码,需要添加参数:参考:https://blog.csdn.net/a6470831/article/details/12443859原创 2022-05-17 12:17:41 · 1357 阅读 · 4 评论 -
微服务之Sentinel-第五章-规则管理模式
目录一、Sentinel的控制台规则管理有三种模式:1、规则管理模式-原始模式2、规则管理模式-pull模式3、规则管理模式-push模式参考原文链接:https://blog.csdn.net/a6470831/article/details/124438593一、Sentinel的控制台规则管理有三种模式:1、规则管理模式-原始模式原始模式:控制台配置的规则直接推送到Sentinel客户端,也就是我们的应用。然后保存在内存中,服务重启则丢失2、规则管理模式-pull模式pull模式:控制原创 2022-05-15 16:00:22 · 287 阅读 · 0 评论 -
微服务之Sentinel-第四章-授权规则和自定义异常
目录一、授权规则1、授权规则(黑白名单)案例需求原理代码实现给/order/{orderId} 配置授权规则:2、自定义异常结果一、授权规则1、授权规则(黑白名单)授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。白名单:来源(origin)在白名单内的调用者允许访问黑名单:来源(origin)在黑名单内的调用者不允许访问案例需求例如,我们限定只允许从网关来的请求访问order-service,那么流控应用中就填写网关的名称原理Sentinel是通过RequestOri原创 2022-05-15 15:51:39 · 691 阅读 · 0 评论 -
微服务之Sentinel-第三章-隔离和降级和Feign整合Sentinel
目录一、概述二、线程隔离(仓壁模式)三、降级熔断1、熔断策略-慢调用案例需求代码配置降级规则2、熔断策略-异常比例案例需求代码配置降级规则四、Feign整合Sentinel1、修改配置文件application.yml文件,开启Feign的Sentinel功能2、给FeignClient编写失败后的降级逻辑步骤一:在feing-api项目中定义类,实现FallbackFactory:步骤二:在feing-api项目中的UserClient接口中使用UserClientFallbackFactory:一、概原创 2022-05-12 22:50:16 · 726 阅读 · 0 评论 -
微服务之Sentinel-第二章-限流规则和热点规则
一、簇点链路簇点链路:就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:二、快速入门点击资源/order/{orderId}后面的流控按钮,就可以弹出表单。表单中可以添加流控规则,如下图所示:其含义是限制 /order/{orderI原创 2022-05-11 22:53:29 · 716 阅读 · 0 评论 -
微服务之Sentinel-第一章-初识入门
一、雪崩问题微服务调用链路中的某个服务故障,引起整个链路中所有微服务都不可用,这就是雪崩。解决雪崩问题的常见方式有四种超时处理(服务故障处理)设定超时时间,请求超过一定时间没有相应就返回错误信息,不会无休止的等待。该方法只能缓解,不能根本解决问题。舱壁模式(服务故障处理)限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离熔断降级(服务故障处理)有断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。流量控制(瞬间高并发预防)原创 2022-05-09 23:07:39 · 939 阅读 · 1 评论 -
SpringCloud网关的权限验证实践
一、概述公司、个人开发的系统上线后,系统中 API 暴露到网络上会存在一定的安全风险,比如:爬虫、恶意访问、错误访问等。API没有安全性,用户可以任意注册即可无限次访问和调用API,且没有请求与特定用户数据关联的简单方法,就无法防止恶意用户的恶意请求等。常用 API 接口安全措施如下几种:(1)数据加密数据在互联网传输过程很容易被抓包,如果直接传输,那么用户数据可能被其他人获取,导致系统安全性等问题,所以必须对数据加密。常见的做法是对关键字段加密,比如用户密码直接通过 md5 加密。(2)数据签名转载 2022-04-19 09:39:21 · 3093 阅读 · 0 评论 -
Java高可用架构设计-【春晚大流量高并发】
场景一 春晚大流量高并发https://www.toutiao.com/article/7087738138654704131/?log_from=036bdb534fca5_1650254671454前端接入CDN在全国各地都搞一批服务器,然后呢,让CDN提前请求我们的后端系统,把一些图片、视频一类的静态资源都加载到 全国各地的CDN服务器上去。接着呢,全国各地的用户打卡手机APP,想要加载图片和视频的时候,就近找一个距离自己最近的CDN服务器加载图片和视频就可以了,这样就可以让超高流量分散到全国转载 2022-04-18 12:14:17 · 431 阅读 · 0 评论 -
ELK入门及高级应用+docker部署ELK
一、基于7.5.1docker pull docker.elastic.co/logstash/logstash:7.5.1docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1docker pull docker.elastic.co/kibana/kibana:7.5.1 二、部署Elasticsearch1、创建docker子网络docker network create elk-net2、安装ElasticSe原创 2022-04-08 14:12:44 · 3495 阅读 · 0 评论 -
SpringCloud集成统一网关Gateway
一、为什么需要网关在SpringCloud的网关的实现包含如下两种gatewayzuulzuul是基于Servlet的实现,属于阻塞时编程。而Gateway则是基于Sprng5中提供的WebFlux,属于响应式编程的实现,具有更好的性能。二、搭建网关1.创建module,引入依赖和nacos的发现组件<!--gateway 网关依赖,内置webflux 依赖--><dependency> <groupId>org.springframewor原创 2022-04-02 08:00:00 · 1231 阅读 · 0 评论 -
SpringBoot中@profiles.active@的用法
1. 在pom.xml中引入如下<profiles> <profile> <id>dev</id> <properties> <!-- 环境标识,需要与配置文件的名称相对应 --> <profiles.active>dev</profiles.active> &原创 2022-03-29 23:01:03 · 3678 阅读 · 2 评论 -
SpringCloud集成Feign高级配置性能优化最佳实践
自定义Feign的配置配置日志方式一全局配置# 全局生效feign: client: config: default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置 loggerLevel: Full # 日志级别Basic局部生效# 全局生效feign: client: config: userservice: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的.原创 2022-03-28 23:24:23 · 2334 阅读 · 0 评论 -
nacos报错errCode: 100, errMsg: Nacos serialize for class [com.alibaba.nacos.common.http.HttpRestResult
用户名密码不要有@等特殊字符原创 2022-03-22 23:27:08 · 3319 阅读 · 0 评论 -
docker安装nacos并存储在mysql
下载docker pull nacos/nacos-server新建挂在目录mkdir -p /usr/local/nacos/logs #新建logs目录mkdir -p /usr/local/nacos/init.dmkdir -p /usr/local/nacos/data修改custom.propertiesvi /usr/local/nacos/init.d/custom.properties #默认配置文件#spring.原创 2022-03-22 23:26:20 · 1717 阅读 · 0 评论 -
Nacos集群
https://www.imooc.com/article/288153搭建步骤:1、架构2、nacos节点节点 端口127.0.0.1 8848127.0.0.1 8849127.0.0.1 8850复制三份Nacos安装包,将 conf/application.properties 中的server.port=8848分别改为:server.port=8848server.port=8849server.port=885..原创 2022-03-18 08:15:00 · 185 阅读 · 0 评论 -
Nacos配置管理
统一配置 管理添加配置获取配置的步骤引入nacos依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>新建bootstrap.ymlspring: application: userserv原创 2022-03-17 23:25:36 · 470 阅读 · 0 评论 -
Nacos注册中心
1.配置集群集群名称用于,微服务优先访问集群内服务,如果不可用才访问其他集群a.先配置服务发现,并指定集群spring: cloud: nacos: server-addr: 127.0.0.1:8848 discovery: cluter-name: GUANGZHOU # 集群名称,也就是机房位置b. 配置负载均衡规则,这个规则会优先访问同一个集群的服务userservice: ribbon: NFLoadBalancerRuleClassName: c原创 2022-03-15 23:19:46 · 722 阅读 · 0 评论