eureka

springcloud干货之服务消费者(ribbon)

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-28 09:29:13
springcloud系列文章的第二篇 本章介绍springcloud中的服务消费者   springcloud服务调用方式有两种实现方式:     1,restTemplate+ribbon,     2,feign  本来想一篇讲完,发现篇幅有点长,所以本章先讲 restTemplate+ribbon,     ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。     Feign默认集成了ribbon。      项目实战: 新一个springboot项目,名字为 eureka-consumer-ribbon 其pom.xml配置如下 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka

eureka缓存细节以及生产环境的最佳配置

自作多情 提交于 2020-01-27 09:14:56
eureka作为spring cloud微服务架构里的注册中心,是非常核心的一个组件。它本身的架构避免了复杂的选主算法,比较简单,搭个demo也确实很快,但是如果要用于生产环境,还是得注意很多东西,尤其是下线延迟... 一、服务获取中的缓存问题 第一节的内容都是从这个issue翻译的: Documentation: changing Eureka renewal frequency WILL break the self-preservation feature of the server 1.1 为什么修改client的默认心跳时间,会导致自我保护模式失效? Eureka Service会认为客户端是以30s的频率来发送心跳的。服务端期望收到的最大心跳时间是: n instances x 2(60s/30s) x threshold 如果是2个实例,Eureka会期望每分钟有:2 instances x 2 x 85% =3.4个心跳,也就是说需要3个心跳。 如果client的心跳改成15s,挂掉一个,另一个在1min内会发出4个心跳,而这时候的阈值还是3.4个,自我保护模式就失效了。 核心原因就是在Eureka Server计算期望心跳数的时候写死了每分钟的心跳间隔,即30秒,所以他永远会是*2(感觉像是新手写的代码啊啊啊 -_-) viewport-index

jenkins自动部署脚本

江枫思渺然 提交于 2020-01-27 04:54:57
#删除历史jar包 rm -rf /usr/local/dockerspace/SCM-PUB/eureka/lansen-server-eureka-1.0.jar #拷贝构建好的jar包到当前目录 cp $projectPath/lansen-server-eureka/target/lansen-server-eureka-1.0.jar /usr/local/dockerspace/SCM-PUB/eureka/ #取当前系统时间 pj_version=$(date +%Y%m%d%H%M%S) #自定义docker的name image_name="47.102.221.162:5000/eureka:$pj_version" uatimage_name="172.19.29.133:5000/eureka:$pj_version" #打包docker image docker build -t $image_name /usr/local/dockerspace/SCM-PUB/eureka/ #把docker的images 推送到docker镜像库47.102.221.162以及线上uat服务器(47.102.221.162) docker push $image_name #调用此脚本把响应的参数通过socket传送到对应的部署的服务器 /root/python

SpringCloud与Dubbo对比

天涯浪子 提交于 2020-01-26 14:43:48
SpringCloud和Dubbo都是当下流行的RPC框架,各自都集成了服务发现和治理组件。SpringCloud用Eureka做注册中心,Dubbo用Zookeeper注册中心。 注册服务 Dubbo是基于java接口及Hession2序列化的来实现传输的,Provider对外暴露接口,Consumer根据接口的规则调用。也就是Provider向Zookeeper注册的是接口信息,Consumer从Zookeeper发现的是接口的信息,通过接口的name,group,version来匹配调用。Consumer只关注接口是否匹配,而对此接口属于什么应用不关心。当然接口的注册信息里会包含应用的ip,hostname等。 SpringCloud的服务发现是基于Http协议来实现的,Provider对外暴露的是应用信息,比如应用名称,ip地址等等,Consumer发现的是应用的信息,当调用的时候随机选择一个Provider的IP地址,应用名称,然后依据Http协议发送请求。Consumer关注的是应用名称,根据应用名称来决定调用的是哪个服务集群,然后对此名称对应的服务集群做负载均衡。Provider接受到请求后,根据内置的SpringMVC来匹配路由处理请求。 SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka

springcloud简介

筅森魡賤 提交于 2020-01-26 00:16:18
文章目录 1、springcloud简介 入门案例 2、初识eureka Eureka简介: Eureka的使用 1、springcloud简介 简介 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 详细介绍: https://baike.so.com/doc/25751000-26884657.html 配套参考资料: https://projects.spring.io/spring-cloud/ springcloud项目官方主页 https://springcloud.cc/ springcloud中文网 有很详细的翻译文档 http://springcloud.cn/ springcloud中文论坛 Springcloud版本pom文件生成可借助网站: https://start.spring.io/

Spring-Cloud组件eureka

浪尽此生 提交于 2020-01-24 23:52:36
eureka是什么? eureka是Netflix的子模块之一,也是一个核心的模块,eureka里有2个组件,一个是EurekaServer(一个独立的项目) 这个是用于定位服务以实现中间层服务器的负载平衡和故障转移,另一个便是EurekaClient(我们的微服务) 它是用于与Server交互的,可以使得交互变得非常简单:只需要通过服务标识符即可拿到服务。 eureka与Spring-Cloud有什么关系? Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(可以对比Zookeeper)。 Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。 而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。 角色关系图: 在springcloud 项目中添加依赖: eureka客户端: <dependency> <groupId>org.springframework.cloud</groupId>

Spring Cloud Eureka

筅森魡賤 提交于 2020-01-24 09:46:29
Eureka主要分为服务端与客户端 服务端需要加上两个注释 @EnableEurekaServer @SpringBootApplication ,服务端注重配置 客户端要加上两个注释 @EnableDiscoveryClient @SpringBootApplication ,基本上在一个分布式系统中,只要会提供服务的组件,就一定要注册到服务注册与发现组件中(Eureka,Zookeeper, Consul)都要加上 @EnableDiscoveryClient 这个注释 Eureka 服务端 服务端依赖 < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-netflix-eureka-server </ artifactId > </ dependency > 服务端最简配置 spring . application . name = eureka - server server . port = 8761 eureka . instance . hostname = localhost # 由于该应用为注册中心,所以设置为 false , 代表不向汪册中心注册自己 eureka . client . registerwith

第一篇:springCloud 服务的注册与发现

大兔子大兔子 提交于 2020-01-23 21:03:22
一. spring Cloud 简介 spring cloud 基于 spring boot , 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、时间总线、全局锁、决策锁、分布式会话等。 基于spring cloud 开发的应用程序特别适合在Docker或者其他专业平台Paas(平台即服务,如Cloud Foundry)部署,所以又称作原生云应用(Cloud Native Application)。 二. 创建服务注册中心 在这里,我们需要在用到的组件上Spring Cloud Netflix的Eureka , eureka 是一个服务注册模块。 2.1 首先创建一个maven主工程 2.2 然后创建2个model工程 ,一个model工程为注册中心,即Eureka Server ,另一个作为Eureka Client 先创建一个server,以server为例,详细说明创建过程: 右键工程 -> 创建mould -> 选择spring initialir ,如下图 下一步 -> 选择 Spring Cloud Config -> Config Server,然后一直下一步就可以了 创建完后的工程pom.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http

微服务架构专题十:Spring-Cloud 之 config 配置中心

左心房为你撑大大i 提交于 2020-01-23 16:49:56
文章目录 一、config是什么? 二、怎么使用config? 三、客户端从config上获取配置 四、spring cloud config 高可用 一、config是什么? 我们既然要做项目, 那么就少不了配置,传统的项目还好,但是我们微服务项目, 每个微服务就要做独立的配置, 这样难免有点复杂, 所以, config项目出来了,它就是为了解决这个问题: 把你所有的微服务配置通过某个平台: 比如 github, gitlib 或者其他的git仓库 进行集中化管理(当然,也可以放在本地)。 可能这样讲有点抽象,我们来看一张图:大概是这样一个关系 二、怎么使用config? 刚刚讲完理论, 那么我们来实践一下, 怎么配置这个confi呢? 我们刚刚说过 由一个config server 来管理所有的配置文件, 那么我们现在新建一个config server 项目 然后引入依赖: < dependency > < groupId > org . springframework . cloud < / groupId > < artifactId > spring - cloud - config - server < / artifactId > < / dependency > spring-cloud 的依赖我们就不提了,然后启动类上面加入注解EnableConfigServer

spring cloud的Hoxton.SR1版本的feign的优雅降级的实现

我的梦境 提交于 2020-01-23 05:20:31
spring cloud的Hoxton.SR1版本的feign的优雅降级的实现 源码下载 前言 feign的优雅降级的实现 注册中心 账户微服务 订单微服务 验证feign的降级 源码下载 大家可以直接微信扫描上面的二维码关注我的公众号,然后回复hoxton feign里面就会给到源代码的下载地址同时会附上相应的视频教程,并定期的与大家分享相关的技术文章。 前言 在我们基于spring cloud进行开发的时候我们的微服务之间的调用,会由于网络原因、程序原因、数据库等原因导致我们的微服务的调用失败,而失败则会导致抛出错误,这些错误就会不断往上抛,而给到用户很不好的体验,最简单粗暴的处理的方式就是调用其他微服务的时候我们直接try…catch起来直接进行处理,这种处理方式简单粗暴而且后期维护起来也是一个麻烦,因此我们需要一种更加优雅的处理方式,而feign刚好就为我们提供了这种优雅的处理方式,接下来我将为大家讲解如何优雅的实现我们的降级。 feign的优雅降级的实现 首先我们使用intellij开发工具创建一个空的项目,主要用于存放我们的整个工程,整个工程由以下三个项目组成,分别是:feign-demote-eureka【注册中心】、feign-demote-order【订单微服务】、feign-demote-account【账户微服务】。 注册中心