Web3&Basketball
编程和运动,诗和远方
展开
-
1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力
Spring Cloud Hystrix 是一个基于 Hystrix 实现的微服务架构中的熔断器组件,它能够对微服务之间的调用进行熔断和降级,从而提高系统的可用性和容错能力。Spring Cloud Hystrix 是一个基于 Hystrix 实现的微服务架构中的熔断器组件,它能够对微服务之间的调用进行熔断和降级,从而提高系统的可用性和容错能力。通过使用 Spring Cloud Hystrix 熔断器,可以实时监控服务之间的调用情况,并根据设定的规则进行熔断和降级处理,提高系统的可用性和容错能力。原创 2023-10-20 15:29:08 · 2300 阅读 · 228 评论 -
Spring Cloud Nacos 和 Eureka区别,包含实战代码
Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别在于底层架构、服务发现方式、配置管理和支持的编程语言等方面。原创 2023-08-29 09:32:25 · 7645 阅读 · 125 评论 -
实战系列(一)| Dubbo和Spring Cloud的区别,包含代码详解
Dubbo 是阿里巴巴开源的一个高性能、轻量级的 RPC 框架,主要用于构建微服务之间的服务治理。它提供了服务注册与发现、服务路由、负载均衡、服务熔断等功能。Dubbo 支持多种服务治理组件,如 Nacos、Zookeeper、Eureka 等。Spring Cloud 是基于 Spring Boot 的一个微服务架构开发工具,它提供了一系列的开发工具和服务,帮助开发者快速构建分布式系统和微服务架构。原创 2023-09-01 17:17:30 · 3341 阅读 · 117 评论 -
Redis高可用解决方案之Redis集群,和Spring Cloud集成实战
总之,Redis 集群与 Spring Cloud 集成过程中,需要配置 Redis 集群信息、引入 Spring Data Redis 组件、创建 Redis 客户端 Bean、操作 Redis 集群以及在其他组件中使用 Redis 集群。综上所述,Redis 集群的核心原理和核心代码涉及数据分片、节点角色、分布式哈希表、数据复制、故障转移和恢复、去中心化通信以及自动故障检测和恢复等方面。Redis 集群的核心原理主要包括数据分片、节点角色、分布式哈希表、数据复制、故障转移和恢复等。原创 2023-11-02 19:47:21 · 2498 阅读 · 131 评论 -
Spring Cloud 实战 | 解密Feign底层原理,包含实战源码
Spring Cloud Feign 是一个基于注解的声明式 Web 服务框架,其核心底层源码主要依赖于 Netflix 的 Ribbon 和 Hystrix。在实际项目中,还可以根据需求配置 Ribbon 和 Hystrix,实现服务的负载均衡和熔断。这里使用了 Ribbon 的负载均衡,当调用该接口时,会自动选择一个可用的服务提供者进行调用。在客户端的控制器中,同样注入了 ServiceProviderFeignClient,并调用了其 sayHello 方法。原创 2023-10-30 18:52:18 · 2631 阅读 · 142 评论 -
Spring Cloud Nacos详解
服务发现:Nacos 支持多种服务发现方式,包括 DNS 方式、HTTP 和 RPC 方式。此外,Nacos 还提供了服务路由功能,支持随机路由、轮询路由和最少连接数路由等。配置管理:Nacos 提供了灵活的配置管理功能,支持配置的推送和拉取。配置数据可以存储在 Nacos 的数据存储中,包括文件存储和数据库存储。此外,Nacos 还提供了配置的版本控制和回滚功能,以及配置的实时变更通知。动态 DNS 服务:Nacos 提供了动态 DNS 服务,可以将服务名称解析为 IP 地址。原创 2023-08-26 00:48:44 · 3233 阅读 · 132 评论 -
Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码
围栏策略的优点是根据服务提供者的健康状况和权重进行负载均衡,可以确保请求分配得更均匀,同时避免了传统轮询策略可能导致的不公平问题。缺点是在服务器数量较少时,可能会导致请求次数较多的服务器承担更多的负载,而请求次数较少的服务器负载较轻。方法首先获取所有服务器的 权重总和,然后遍历服务器列表,根据权重比例随机选择一个服务器。如果在遍历过程中找不到合适的服务器(即随机权重小于当前权重),则返回当前服务器的引用。在实际应用中,可以根据实际情况调整服务器的权重,以实现更精确的负载均衡。最后返回响应时间最短的服务器。原创 2023-10-27 16:58:17 · 3680 阅读 · 145 评论 -
Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用
在 Spring Cloud 项目中使用 Sentinel,主要是通过以下几个步骤来完成:引入依赖、初始化 Sentinel、配置 Sentinel、使用 Sentinel 进行流量控制、熔断和降级、监控 Sentinel。2019 年,Sentinel 朝着多语言扩展的方向不断探索,推出 C++ 原生版本,同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持,以解决 Service Mesh 架构下多语言限流的问题。2012 年,Sentinel 诞生,主要功能为入口流量控制。原创 2023-11-22 07:30:00 · 3203 阅读 · 181 评论 -
Zookeeper 实战 | Zookeeper 和Spring Cloud相结合解决分布式锁、服务注册与发现、配置管理
Zookeeper 是一个开源的分布式协调服务,它起源于 Google 的 Chubby 项目,并成为 Hadoop 分布式系统的基础组件。Zookeeper 提供了一组简单的原语集,分布式应用程序可以基于这些原语实现同步服务、配置维护和命名服务等。Zookeeper 主要角色是协调器(Controller)和客户端(Client)。协调器负责管理分布式应用的逻辑,客户端则用于与协调器进行交互。在分布式应用中,通常需要一个主控节点(Controller)来管理其他物理分布的子进程。原创 2023-11-28 13:28:49 · 7549 阅读 · 245 评论 -
解决前后端调用,跨域二次请求Access-Control-Max-Age
发现前后端分离的项目中,前端发起一个请求到后端,在Chrome浏览器下面debug的时候,Network下面看到同一个url有两条请求,url有两条请求,第一条请求的Method为OPTIONS,第二条请求的Method才是真正的Get或者Post,并且,第一条请求无数据返回,第二条请求才返回正常的数据,我们的整个后台解决跨域问题是用CORS实现的,后来查资料发现原因:第一个OPTIONS的请...原创 2018-09-13 11:45:05 · 15009 阅读 · 1 评论 -
Spring Cloud 项目打印Sql日志
Spring cloud的项目, 默认情况下spring boot使用Logback作为日志实现的框架,在application.properties中加入:(com.xxx.xx 是你项目的package)debug=truelogging.level.org.springframework.web=DEBUGlogging.level.com.xxx.xxx=DEBUG原创 2017-11-10 13:36:09 · 10903 阅读 · 1 评论 -
Spring Cloud 项目整合Log4j2
Spring Cloud 项目整合Log4j2的步骤。 1、排除logback的默认集成。 因为Spring Cloud 默认集成了logback, 所以首先要排除logback的集成,在pom.xml文件: <dependency> <groupId>org.springframework.boot</groupId> ...原创 2018-08-01 18:09:26 · 5596 阅读 · 1 评论 -
Spring Cloud Zuul The 'Access-Control-Allow-Origin' header contains multiple values
发布Spring Cloud Zuul的时候,前端遇到如下错误: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘, ‘, but only one is allowed. Origin ‘http://XXXX’ is therefore not allowed access.参照:https://g...原创 2018-07-19 17:58:47 · 4149 阅读 · 1 评论 -
Spring Cloud Zuul No 'Access-Control-Allow-Origin' header is present on the requested resource.
Spring Cloud Zuul发布到测试环境的时候,调用微服务报如下错误:Failed to load http://xxx/con/cons?num=%7B%22: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is pres...原创 2018-07-19 15:48:58 · 1314 阅读 · 1 评论 -
415 org.springframework.web.HttpMediaTypeNotSupportedException Content type 'null' not supported
在用Postman调用微服务的时候,发现一直出现错误:{ "timestamp": 1529391330656, "status": 415, "error": "Unsupported Media Type", "exception": "org.springframework.web.HttpMediaTypeNotSupportedExceptio.原创 2018-06-19 15:05:17 · 5680 阅读 · 0 评论 -
no main manifest attribute, in xxx.jar
在Linux中,用java -jar xxx.jar启动的时候,报错: no main manifest attribute, in xxx.jar查找资料发现, 是打包的时候,需要在pom.xml文件中加入: <plugin> <groupId>org.springframework.boot&l...原创 2018-06-21 15:02:49 · 21847 阅读 · 6 评论 -
Spring Cloud Zuul addZuulRequestHeader 中文乱码解决方案
在Spring Cloud Zuul中添加filter的时候,要在header中加入含有中文属性的对象,在另外一个微服务中接受的时候,发现中文乱码,具体解决方案,是先用URLEncoder编码,然后微服务的接受的时候再解码 Spring Cloud Zuul:RequestContext.getCurrentContext().addZuulRequestHeader("user", URL...原创 2018-06-25 13:23:39 · 4790 阅读 · 0 评论 -
ZuulException: Forwarding error : Load balancer does not have available server for client:
在配置zuul的时候,用postman调接口的时候报错误:com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutin...原创 2018-07-03 15:40:44 · 4744 阅读 · 0 评论 -
ZuulException: Forwarding error java.net.UnknownHostException: DESKTOP-QBA1AHC:
在调试Spring Cloud Zuul的时候, 开发环境微服务配置了2台,一台本地,一台被人的电脑,做测试,发现一会调的通,一会儿调试不同,报错:com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.Rib...原创 2018-07-03 15:56:49 · 1431 阅读 · 0 评论 -
Unable to find a single main class from the following candidates
用docker部署spring cloud微服务的时候,执行mvn package docker:build报如下错误:[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.12.RELEASE:repackage (default) on project pica-clou...原创 2018-04-24 11:47:52 · 5483 阅读 · 4 评论 -
Spring boot error:java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
启动spring cloud微服务的时候,报错: Spring boot error:java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy解决办法,引入以下: <dependency> <groupId>org.springframewo...原创 2018-04-25 15:47:34 · 12294 阅读 · 4 评论 -
java.lang.IllegalStateException: PathVariable annotation was empty on param 0.
在Spring Cloud Zuul中的Filter加入一个Service,运行的时候报错: java.lang.IllegalStateException: PathVariable annotation was empty on param 0.要在@PathVariable后面加入value;修改前:@RequestMapping(value = "/hello/{name}"...原创 2018-05-22 17:36:42 · 6678 阅读 · 2 评论 -
'feign.FeignContext' that could not be found
在Spring Cloud Zuul中加入Feign,报如下错误: feign.FeignContext’ that could not be found从以下两个方面Check:I.在pom文件中引入下面的jar:&lt;dependency&gt; &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt; ...原创 2018-05-22 18:49:41 · 3219 阅读 · 0 评论 -
Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build Exception caught: basedir src/mai
Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build Exception caught: basedir src/main/docker does not existDeploy Spring Cloud project with docker, some code in the pom.xml:<bui...原创 2018-03-23 11:52:56 · 20740 阅读 · 0 评论 -
Spring Cloud (11) | healthcheck开启健康检查
Eureka Server与Eureka Client之间使用心跳机制来确定Eureka Client的状态,默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持“UP”状态,所以微服务的UP并不能完全反应应用程序的状态。Spring Boot Actuator提供了/health端点,该端点可展示应用程序的健康信息,只有将该端点中的健康状态传播到Eureka Server就可以了,实现原创 2017-12-15 16:52:44 · 26253 阅读 · 0 评论 -
Spring Cloud (10) | Eureka 各项参数详解
eureka.client.registry-fetch-interval-seconds 表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅速获取服务注册状态,可以缩小该值,比如5秒eureka.instance.lease-expiration-duration-in-seconds leaseExpirationDurationIn原创 2017-12-15 16:58:24 · 3652 阅读 · 0 评论 -
Spring Cloud | Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainer
今天在用main方法启动spring cloud项目的时候,报如下错误:org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextExcept原创 2017-12-26 19:23:57 · 3971 阅读 · 0 评论 -
Spring Cloud (8) | Spring Boot项目改造成tomcat容器启动
spring cloud项目在本地很容易用main方法启动,但是发不到测试和生产服务器上,很多童鞋还是习惯使用tomcat容器启动,并查看log,OK,让我们来讲述如何来做: Step 1: 在pom文件里排除spring boot tomcat 依赖: <dependency> <groupId>org.springframework.boot</groupId原创 2017-12-26 19:44:46 · 2999 阅读 · 0 评论 -
Spring Cloud (20) | Spring Cloud Bus 使用kafka消息总线、gitlab添加webhooks实现自动刷新配置
Spring Cloud Bus 使用kafka实现消息总线, 第一步,首先在项目中pom.xml添加如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-bus-kafka</artifactId>原创 2017-12-11 20:44:59 · 6768 阅读 · 2 评论 -
curl -X post http://localhost:8888/bus/refresh throws HttpRequestMethodNotSupportedException "post"
在用Spring Cloud Bus、kafka实现config-server自动刷新配置的时候,执行命令:curl -X post http://localhost:8881/bus/refresh报如下错误:{"timestamp":1513070184793,"status":405,"error":"Method Not Allowed","exception":"org.springfra原创 2017-12-12 17:22:32 · 5758 阅读 · 1 评论 -
curl -X POST http://localhost:8881/bus/refresh Unauthorized Full authentication is required
在用Spring Cloud Bus、kafka实现config-server自动刷新配置的时候,执行命令:curl -X POST http://localhost:8881/bus/refresh报如下错误:{"timestamp":1513070580796,"status":401,"error":"Unauthorized","message":"Full authentication i原创 2017-12-12 17:37:24 · 10193 阅读 · 1 评论 -
Spring Cloud (18) | 给Eureka Server加上安全验证
启动Spring Cloud Eureka Server项目工程的时候,直接输入localhost:8761,就可以看到所有注册服务,这样在生产环境是极不安全,如何解决这个问题呢? 首先,在eureka server项目中pom.xml文件中加入依赖: <dependency> <groupId>org.springframework.boot</groupI原创 2017-12-13 14:28:50 · 3162 阅读 · 0 评论 -
Spring Cloud (19) | Eureka Server 高可用服务注册中心
在搭建Eureka Server,配置高可用服务注册中心,配置3个Eureka Server:下面出现登录问题,需要参照给Eureka Server加上安全验证这篇文章:Spring Cloud (18) | 给Eureka Server加上安全验证application.yml:#安全验证security: basic: enabled: true user: name:原创 2017-12-14 17:39:51 · 1405 阅读 · 0 评论 -
NoClassDefFoundError: com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect
在Spring Cloud Feign工程中配置断路器Hystrix的时候,pom.xml文件已经加入Hystrix相关的jar: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artif原创 2017-12-11 15:58:23 · 17027 阅读 · 3 评论 -
Spring Cloud (16) | Spring Cloud微服务重构问题总结
注册IP问题 早期的Spring Cloud Eureka在注册获取网卡IP时,不能区分外网网卡和内网网卡,如果安装了虚拟机和docker也不能区分虚拟网卡,每次启动注册的IP都有可能不一样,如果要注册为外网网卡IP,那运行带宽就不够,这个bug应该说是比较严重的问题,因此重写了网卡IP获取的逻辑来解决,同时也反馈给了spring cloud团队,再后期的版本中添加了网卡接口排序和通过名称过滤的功原创 2017-12-11 17:17:20 · 732 阅读 · 0 评论 -
Spring Cloud (15) | Spring Boot、HikariCP、Mybatis和MySQL 配置HikariCP数据库连接池
HiKariCP数据库连接池号称目前是最快的, HikariCP VS druid VS c3p0 VS dbcp VS jdbc 数据库连接池性能比对性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0,hikariCP的高性能得益于最大限度的避免锁竞争。druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。综合性能,扩展性等方面,可考虑原创 2017-12-07 10:37:36 · 7185 阅读 · 0 评论 -
Spring Cloud (14) | 微服务不能从git/github/gitlab中获取数据库信息 can't load properties from git/github/gitlab
最近在spring cloud 部署的时候,发现之前可以从git/github/gitlab中获取数据库信息,但是现在不可以,可有的服务又可以,发现可以从git/github/gitlab中获取数据库信息的微服务,在启动的时候,打印Spring boot图标的下面,会打印出从git获取配置信息的如下:2017-12-06 14:58:01.395 INFO 28442 --- [原创 2017-12-06 15:06:20 · 2568 阅读 · 0 评论 -
Spring Cloud (7) | Mongodb 微服务
新建spring-cloud-mongodb工程,mongodb微服务提供动态读取git中mongodb配置信息 pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i原创 2017-11-25 18:40:00 · 4612 阅读 · 2 评论 -
Spring Cloud (13) | Router and Filter: Zuul
9. Router and Filter: ZuulRouting in an integral part of a microservice architecture. For example, / may be mapped to your web application, /api/users is mapped to the user service and /api/shop is map原创 2017-12-04 20:52:32 · 2208 阅读 · 1 评论 -
Spring Cloud (12) | Spring Cloud Zuul网关调用微服务,request请求参数是application/json
在做Spring Cloud Zuul网关调用微服务的时候,request请求参数是以&连接的text/html形式,这样的数据不是特别好处理,其实可以通过split截取,但是如果参数里面包含”&”,就很麻烦,所以接下来通过下面的步骤来解决:前端请求传输数据需要是json的形式, dataType: “json”, contentType : “application/json; charset=原创 2017-12-01 10:05:12 · 5064 阅读 · 0 评论