随笔分类 - 微服务专题
微服务相关组件
摘要:我们知道,当请求失败,被拒绝,超时的时候,都会进入到降级方法中。但进入降级方法并不意味着断路器已经被打开。那么如何才能了解断路器中的状态呢? Hystrix的监控平台 除了实现容错功能,Hystrix还提供了近乎实时的监控,HystrixCommand和HystrixObservableComman
阅读全文
摘要:SpringCloud Fegin默认已为Feign整合了hystrix,所以添加Feign依赖后就不用在添加hystrix,那么怎么才能让Feign的熔断机制生效呢,只要按以下步骤开发: (1)复制 shop_service_order 项目并命名为 shop_service_order_feig
阅读全文
摘要:(1)复制 shop_service_order 项目并命名为 shop_service_order_rest_hystrix 略 (2)配置依赖 在 shop_service_order_rest_hystrix 工程中添加Hystrix的相关依赖 <dependency> <groupId>or
阅读全文
摘要:雪崩效应 在微服务架构中,一个请求需要调用多个服务是非常常见的。如客户端访问A服务,而A服务需要调用B服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服务将处于阻塞状态,直到B服务C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪
阅读全文
摘要:问题分析 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累计,导致服务瘫痪。 在SpringBoot程序中,默认使用内置to
阅读全文
摘要:通过注册中心已经实现了微服务的服务注册和服务发现,并且通过Ribbon实现了负载均衡,已经借助Feign可以优雅的进行微服务调用。那么我们编写的微服务的性能怎么样呢,是否存在问题呢? 性能工具Jmetter Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压
阅读全文
摘要:组件的使用方式 注册中心 (1)Eureka 搭建注册中心 引入依赖 spring-cloud-starter-netflix-eureka-server 配置EurekaServer 通过 @EnableEurekaServer 激活Eureka Server端配置 服务注册 服务提供者引入 sp
阅读全文
摘要:通过上面的使用过程,@EnableFeignClients和@FeignClient两个注解就实现了Feign的功能,那我们从 @EnableFeignClients注解开始分析Feign的源码 (1)EnableFeignClients注解 @Retention(RetentionPolicy.R
阅读全文
摘要:在开发或者运行阶段往往希望看到Feign请求过程的日志记录,默认情况下Feign的日志是没有开启的。 要想用属性配置方式来达到日志效果,只需在 application.yml 中添加如下内容即可: feign: client: config: shop-service-product: logger
阅读全文
摘要:Spring Cloud Feign 支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗。通过下面的参数,即可开启请求与响应的压缩功能: feign: compression: request: enabled: true # 开启请求压缩 response: enabled: true
阅读全文
摘要:从Spring Cloud Edgware开始,Feign支持使用属性自定义Feign。对于一个指定名称的Feign Client(例如该Feign Client的名称为 feignName ),Feign支持如下配置项: feign: client: config: feignName: ##定义
阅读全文
摘要:Feign简介 Feign是Netflflix开发的声明式,模板化的HTTP客户端,其灵感来自Retrofifit,JAXRS-2.0以及WebSocket. Feign可帮助我们更加便捷,优雅的调用HTTP API。 在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添
阅读全文
摘要:Ribbon中的关键组件 ServerList:可以响应客户端的特定服务的服务器列表。 ServerListFilter:可以动态获得的具有所需特征的候选服务器列表的过滤器。 ServerListUpdater:用于执行动态服务器列表更新。 Rule:负载均衡策略,用于确定从服务器列表返回哪个服务器
阅读全文
摘要:什么是负载均衡 在搭建网站时,如果单节点的 web服务性能和可靠性都无法达到要求;或者是在使用外网服务时,经常担心被人攻破,一不小心就会有打开外网端口的情况,通常这个时候加入负载均衡就能有效解决服务问题。 负载均衡是一种基础的网络服务,其原理是通过运行在前面的负载均衡服务,按照指定的负载均衡算法,将
阅读全文
摘要:不论是基于Eureka的注册中心还是基于Consul的注册中心,SpringCloudRibbon统一进行了封装,所以对于服务调用,两者的方式是一样的。 坐标依赖 在springcloud提供的服务发现的jar中以及包含了Ribbon的依赖。所以这里不需要导入任何额外的坐标 工程改造 (1) 服务提
阅读全文
摘要:经过以上的学习,已经实现了服务的注册和服务发现。当启动某个服务的时候,可以通过HTTP的形式将信息注册到注册中心,并且可以通过SpringCloud提供的工具获取注册中心的服务列表。但是服务之间的调用还存在很多的问题,如何更加方便的调用微服务,多个微服务的提供者如何选择,如何负载均衡等。 Ribbo
阅读全文
摘要:consul高可用集群架构图: 此图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。每个Server或C
阅读全文
摘要:案例准备 (1)复制一份新的工程进行配置 拷贝一份新的工程,起名为 shop_consul_parent ,并导入相关的子模块 (2)修改微服务的相关pom文件 修改每个微服务的pom文件,添加SpringCloud提供的基于Consul的依赖 <!--SpringCloud提供的基于Consul的
阅读全文
摘要:Consul 支持健康检查,并提供了 HTTP 和 DNS 调用的API接口完成服务注册,服务发现,以及K/V存储 这些功能。接下来通过发送HTTP请求的形式来了解一下Consul 服务注册与发现 (1)注册服务 通过postman发送put请求到http://192.168.74.101:8500
阅读全文
摘要:在Euraka的GitHub上,宣布Eureka 2.x闭源。近这意味着如果开发者继续使用作为 2.x 分支上现有工作 repo 一部分发布的代码库和工件,则将自负风险。 Eureka的替换方案 Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的
阅读全文