微服务
文章平均质量分 83
微服务相关文章
developer@liyong
GISer
展开
-
springcloud(Hystrix服务降级,服务熔断)
基础知识首次分布式服务系统面临的问题复杂的分布式体系结构中的应用程序有数十个依赖关系,每个依赖有时候难免发生问题,这个时候可能引发连锁反应,导致整个系统雪崩。所以就有了Hystrix:官网地址Hystrix的主要作用:服务降级:服务器忙,请稍候再试,不让客户端等待并立刻返回一个友好提示,fallback。发生的场景程序运行异常,超时,服务熔断触发服务降级,线程池/信号池打满也会导致服务降级。服务熔断:类比保险丝,达到最大服务访问后直接拒绝访问,然后调用服务降级的方法。服务限流:秒杀高并发操原创 2022-05-31 10:56:32 · 232 阅读 · 0 评论 -
springcloud(服务网关GateWay)
基础知识概念Spring Cloud Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架。能够进行反向代理,鉴权,熔断,流量监控,熔断,日志监控等操作。一般大型系统架构图图片源自:尚硅谷视频教学2.gateway的三大核心概念路由 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由断言 参考的是java8的java.util.function.Predicate开发原创 2022-06-02 15:14:00 · 493 阅读 · 1 评论 -
springcloud(基础概念,组件情况,与springboot版本对应,项目初始化,热部署)
spring cloud1 基本概念1.1 微服务可以简单的理解为微服务就是一个一个的springboot应用。1.2 spring cloud分布式微服务架构的一站式解决方案是多种微服务架构落地技术的集合体,服务的发现,注册,熔断,监控等等都可以通过springcloud来解决。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qscxwN8V-1653834371265)(C:\Users\liyong\AppData\Roaming\Typora\typora-原创 2022-05-29 22:53:47 · 181 阅读 · 0 评论 -
springcloud(服务注册中心,非重点组件)
Eureka服务注册与发现Eureka与dubbo架构图的对比Eureka服务的安装单机添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>添加配置eureka:原创 2022-05-29 23:15:38 · 93 阅读 · 0 评论 -
springcloud(服务接口调用OpenFeign)
基础概念OpenFeign是一个声明式的WebService客户端,Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。openfegin官网地址使用案例openfegin的使用比较简单,微服务调用接口+@FeignClient就可以实现。这里我们还是用eureka作为注册中心<dependency> <groupId>org.springframework.cloud</groupId>原创 2022-05-30 14:35:00 · 179 阅读 · 0 评论 -
springcloud(负载均衡Ribbon)
基础概念1.Ribbon概念Ribbon就是负载均衡的工具,工作的时候需要与restTemplate配合使用。其本质就是restTemplate + 负载均衡。2.负载均衡击中式负载均衡进程内负载均衡3.Ribbon本地负载均衡客户端VS Nginx服务端负载均衡区别Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从原创 2022-05-30 13:37:21 · 126 阅读 · 0 评论 -
模块工程构建技巧-看完没有收获你来砍我哈哈哈
dubbo 也引用了Spring FrameWork,如果我们将Dubbo放在前面看到了木有,用的就是2.7.8里面的依赖。pom 的继承也是单继承,那如果这个时候我们父工程比如继承了apache,但是我们又想继承Spring Boot怎么办呢?我们可以使用 Maven 的optional 为true这个选项。我们可以采用BOM的方式,这样的话不是继承而是聚合模块,效果和Parent是一样的。好首先咋们把这个配置放到这里,那么这个插件有什么用呢?看到了木有,我们只需要修改一个地方,所有的版本都统一了。原创 2024-08-07 23:32:39 · 827 阅读 · 0 评论 -
微服务-java spi 与 dubbo spi
使用load方法想要获取指定的实现类,需要自己进行遍历并编写各种比较代码,可能实现有多个所以需要比对。使用load方法频率高,容易影响IO吞吐和内存消耗, 可以看到回去静态资源目录下读取文件。SPI :Service Provider Interface, 服务提供接口。使用Map的hash查找,来提升检索指定实现类的性能。增加缓存,来降低磁盘IO访问及减少对象的生成。通过一个案例来看SPI。原创 2024-01-06 18:18:46 · 822 阅读 · 0 评论 -
微服务-dubbo工程案例搭建
也是就是提供方返回的数据进行缓存,前提是数据不需要频繁的变动。这里需要注意缓存数据的大小适不适合做本地缓存,如果是大数据缓存那么需要整合第三方缓存,例如Redis。广播调用就是我们调用一个引用,但是其实所有节点都会执行这个方法,这个应用场景就比如我们要清空每个节点的业务缓存,或者每个节点都要记录一些日志。check设置为false后,如果没有提供方调用会抛异常,如果将来提供方正常了以后,还是可以调用成功。所谓的依赖检查也就是,检查提供方是否提供了对应的服务,如果没有则消费方是会启动报错的。原创 2024-01-06 16:48:37 · 870 阅读 · 0 评论 -
微服务-sentinel-基本案例,持久化
寻找到了 com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter#start 的相关收发数据逻辑。触发一次 Http 请求调用后,发现进入了 com.alibaba.csp.sentinel.init.InitExecutor#doInit 断点。这样我们在界面修改就可以持久化到nacos,这里要注意如果在nacos直接修改,控制台上是不能感知到的。关键代码 2:从 ServerSocket 的 accept 方法收数据。原创 2024-01-06 09:03:11 · 1317 阅读 · 0 评论 -
微服务-Gateway
官网地址自定义局部自定义类,这个类可以参考DedupeResponseHeaderGatewayFilterFactory进行定义@Component@Override@Override@Overrideif (!// 如果这个开关是关闭状态() -> {}));@Override配置routes:filters:- Cost=ON # 这个名字取前面GatewayFilterFactory的自定义全局@Component@Override。原创 2024-01-04 08:09:18 · 2379 阅读 · 1 评论 -
微服务-@FeignClient 与 Feign 隔离
我们在调用的时候在选择实例NacosNamingService#selectInstances,发现会选择实例,这就是 OpenFeign 首次发起远程调用时,会很慢的原因。然后继续往下走:HystrixTargeter -> Feign -> ReflectiveFeign。我们断点打在factoryBean.getObject() 追进去。原创 2024-01-03 15:19:15 · 621 阅读 · 0 评论 -
微服务-OpenFeign-工程案例
OpenFeign:SpringCloud自研,SpringCloud的第二代(负载均衡工具包),扩展支持了@RequestMapping,@GetMapping等之类的注解的能力。首先我们搭建三个服务提供方,简单的搭建直接使用启动参数-Dserver.port 指定不同的端口进行启动,然后在提供方进行调用。是NetFlix的开源项目,主要来提供关于客户端的负载均衡能力。Feign:NetFlix,SpringCloud 的第一代LB(负载均衡)客户端工具包。消费方代码,可以看到打印不同的端口。原创 2024-01-02 21:33:59 · 768 阅读 · 0 评论 -
微服务-理论(CAP,一致性协议)
在我们说一致性的时候,如果去保证强一致性,这个时候客户端如果请求到达了B是不能对外提供服务的,因为一旦提供服务这个数据还是老的数据,就产生了数据的不一致性。服务端节点都存储所有数据,但每个节点只负责其中一部分服务,在接收到客户端的“写“(注册、心跳、下线等)请求后,服务端节点判断请求的服务是否为自己负责,如果是,则处理,否则交由负责的节点处理;客户端以服务为维度向服务端注册,注册后每隔一段时间向服务端发送一次心跳,心跳包需要带上注册服务的全部信息,在客户端看来,服务端节点对等,所以请求的节点是随机的;原创 2024-01-02 08:18:16 · 1595 阅读 · 0 评论 -
微服务-springcloud概览 +(eureka实践, nacos实践)
LoadBalanced这个注解一定要加上(org.springframework.cloud.client.loadbalancer)5 调用方式和上面的一样,使用负载均衡的RestTemplate 进行调用。5.1 使用RestTemplate 进行RPC调用。1 首先我们需要安装 Nacos Server。2 搭建Eureka Server。可以选用Docker。原创 2023-12-24 15:38:59 · 1089 阅读 · 0 评论