spring cloud微服务
文章平均质量分 81
专注于微服务的博客系列
牛奋lch
我是一只快乐的程序猿……
展开
-
spring cloud中Ribbon自定义负载均衡策略
一、Ribbon中的负载均衡策略1、Ribbon中支持的负载均衡策略AvailabilityFilteringRule:过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) | 使用一个AvailabilityPredicate来包含过滤server的逻辑原创 2017-01-23 15:19:58 · 25423 阅读 · 11 评论 -
spring cloud-使用feign来消费Restful服务同时加入Ribbon来实现负载均衡
前言在前面的示例中,我们消费spring boot提供的Restful服务的时候,使用的是RestTemplate来实现的,实现起来还是比较复杂的,尤其是在消费复杂的Restful服务的时候,还需要进行一系列的转换,编解码等,使用Feign就完全不用考虑这个问题了。一、Feign简介Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可原创 2017-01-25 09:57:28 · 17176 阅读 · 9 评论 -
spring cloud-Feign使用中遇到的问题总结
问题一:在前面的示例中,我们讲过@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)@GetMapping("/user/{id}")这两个注解的效果是等价的,但是在Feign使用中,只能用上面的那种方式,不能直接用@GetMapping,下面我们将前面的那个示例中,改成@GetMapping注解看下效果,我们原创 2017-01-25 11:25:01 · 62696 阅读 · 4 评论 -
spring cloud-给Eureka Server加上安全的用户认证
前言在前面的一篇文章中spring cloud中启动Eureka Server我们启动了Eureka Server,然后在浏览器中输入http://localhost:8761/后,直接回车,就进入了spring cloud的服务治理页面,这么做在生产环境是极不安全的,下面,我们就给Eureka Server加上安全的用户认证.一、添加spring-security支持 or原创 2017-01-25 14:29:08 · 23810 阅读 · 15 评论 -
spring cloud-实现Eureka注册中心的HA
前言:在前面的例子中,我们的Eureka Server都是单节点的,一旦该节点在生产中挂掉,就无法再提供服务的注册,为了保证注册中心的高可用,在生产中一般采用多节点的服务注册中心。一、在hosts文件中加入如下配置127.0.0.1 peer1127.0.0.1 peer2二、修改application.yml配置文件---spring: profiles: peer1原创 2017-02-06 18:07:00 · 17484 阅读 · 9 评论 -
spring cloud-使用Hystrix实现单个方法的fallback
一、加入Hystrix依赖 org.springframework.cloud spring-cloud-starter-hystrix 二、编写Controllerpackage com.chhliu.springboot.restful.controller;import org.springframework.beans.factory.annotation.Au原创 2017-02-07 22:23:34 · 13268 阅读 · 1 评论 -
spring cloud-添加Hystrix Dashboard监控到系统中
前言该示例是在spring cloud-使用Hystrix实现单个方法的fallback示例的基础上改进一、添加依赖 org.springframework.cloud spring-cloud-starter-hystrix-dashboard 二、在启动类中添加Hystrix Dashboard支持@EnableHystrix@EnableHy原创 2017-02-07 22:39:11 · 15672 阅读 · 7 评论 -
spring cloud-Feign的Hystrix支持
一、Feign client中加入Hystrix的fallback@FeignClient(name="springboot-h2", fallback=HystrixClientFallback.class) //在fallback属性中指定断路器的fallbackpublic interface UserFeignClient {// @GetMapping("/user/{id}")原创 2017-02-12 21:41:28 · 9779 阅读 · 10 评论 -
spring cloud-整合Swagger2构建RESTful服务的APIs
前言在前面的博客中,我们将服务注册到了Eureka上,可以从Eureka的UI界面中,看到有哪些服务已经注册到了Eureka Server上,但是,如果我们想查看当前服务提供了哪些RESTful接口方法的话,就无从获取了,传统的方法是梳理一篇服务的接口文档来供开发人员之间来进行交流,这种情况下,很多时候,会造成文档和代码的不一致性,比如说代码改了,但是接口文档没有改等问题,而Swagger2则原创 2017-03-01 08:59:14 · 13305 阅读 · 6 评论 -
spring cloud-构建微服务架构的网关(API GateWay)
前言在我们前面的博客中讲到,当服务A需要调用服务B的时候,只需要从Eureka中获取B服务的注册实例,然后使用Feign来调用B的服务,使用Ribbon来实现负载均衡,但是,当我们同时向客户端暴漏多个服务的时候,客户端怎么调用我们暴漏的服务了,如果我们还想加入安全认证,权限控制,过滤器以及动态路由等特性了,那么就需要使用Zuul来实现API GateWay了,下面,我们先来看下Zuul怎么使用原创 2017-03-01 12:20:17 · 32841 阅读 · 1 评论 -
spring cloud-Swagger2整合Eureka,实现Eureka页面自动跳转到Swagger2UI界面查看服务接口信息
一、Eureka Server回顾在前面的博客中,细心的读者可能已经发现,当我们点击某个注册到Eureka Server上的某个服务的时候,链接的界面要么报404,要么就是空的,如下图所示:现在问题,我们已经知道了,怎么来解决了?解决思路就是整个Eureka和Swagger2,当点击链接的时候,直接跳转到Swagger2的UI界面,怎么做了?接着往下看。二、在服务配置中添加配置原创 2017-03-01 12:19:35 · 16466 阅读 · 2 评论 -
spring cloud config整合gitlab搭建分布式的配置中心
在前面的博客中,我们都是将配置文件放在各自的服务中,但是这样做有一个缺点,一旦配置修改了,那么我们就必须停机,然后修改配置文件后再进行上线,服务少的话,这样做还无可厚非,但是如果是成百上千的服务了,这个时候,就需要用到分布式的配置管理了。而spring cloud config正是用来解决这个问题而生的。下面就结合gitlab来实现分布式配置中心的搭建。spring cloud config配置中原创 2017-03-03 17:47:43 · 14675 阅读 · 1 评论 -
spring cloud config分布式配置中心的高可用
在前面的博客中,我们实现了配置文件统一管理的功能,但是我们可以发现,我们仅仅只用了一个server,如果当这个server挂掉的话,整个配置中心就会不可用,下面,我们就来解决配置中心的高可用问题。下面我们通过整合Eureka来实现配置中心的高可用,因为作为架构内的配置管理,本身其实也是可以看作架构中的一个微服务,我们可以把config server也注册为服务,这样所有客户端就能以服务的方式进原创 2017-03-06 09:13:59 · 11232 阅读 · 3 评论 -
spring boot整合jpa构建微服务以及服务调用
一、Maven构建项目1、访问http://start.spring.io/2、选择构建项目的基本信息,参考下图: 3、点击Generate Project下载项目压缩包4、下载后解压到本地,并以Import -> Existing Maven Projects的方式,导入eclipse中5、导入后,项目结构如下: 二、加入web,jpa依赖原创 2016-12-06 19:12:14 · 6050 阅读 · 1 评论 -
mock测试spring boot的CRUD服务
controller如下:@RestControllerpublic class GithubController { @Autowired private GitHubRepository repository; @Autowired private GithubEntityManager manager; /** * attention:用户名可能存在多个 *原创 2016-12-06 23:06:24 · 5952 阅读 · 1 评论 -
使用Jersey客户端请求Spring Boot(RESTFul)服务
Jersey客户端获取Client对象实例封装:@Service("jerseyPoolingClient")public class JerseyPoolingClientFactoryBean implements FactoryBean, InitializingBean, DisposableBean{ /** * Client接口是REST客户端的基本接口,用于和REST原创 2016-12-09 14:16:54 · 6497 阅读 · 0 评论 -
spring boot热启动,热部署
一、模板的热部署 在spring boot里,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,想通过刷新是得不到修改后的页面的,我们可以通过修改application.properties配置文件来达到模板热部署的功能,properties配置文件修改如下:Thymeleaf的配置:spring.thymeleaf.cache=falseFreeMarker的配置:spr原创 2016-12-14 18:49:04 · 12801 阅读 · 0 评论 -
spring boot异步(Async)任务调度
前言在我前面的博客中,多处使用了@Async来实现异步任务调度,具体请参考博客:http://blog.csdn.net/liuchuanhong1/article/details/52326578http://blog.csdn.net/liuchuanhong1/article/details/52042520在没有使用spring boot之前,我们的做法是在配置文件中定义一原创 2017-01-18 22:59:14 · 11305 阅读 · 0 评论 -
springboot整合H2内存数据库,实现单元测试与数据库无关性
一、新建spring boot工程新建工程的时候,需要加入JPA,H2依赖二、工程结构pom文件依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m原创 2017-01-20 12:19:08 · 25128 阅读 · 2 评论 -
使用RestTemplate消费spring boot的Restful服务
一、RestTemplate说明 RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。前面的博客中http://blog.csdn.net/liuchuanhong1/article/details/53537874,已经使用Jersey客户端来实现了消费spring原创 2017-01-20 14:49:27 · 56777 阅读 · 9 评论 -
使用Redis模拟简单分布式锁,解决单点故障的问题
需求描述: 最近做一个项目,项目中有一个功能,每天定时(凌晨1点)从数据库中获取需要爬虫的URL,并发送到对应的队列中,然后客户端监听对应的队列,然后执行任务。如果同时部署多个定时任务节点的话,每个节点都会去查数据库,然后将查到的url发送到队列中,这样的话,客户端就会执行很多重复的任务,如果不同时部署多个节点的话,又存在单点故障的风险。要解决这种类似的问题,可以使用分布式锁来实现,当节原创 2017-01-22 15:12:37 · 6275 阅读 · 1 评论 -
spring boot中多环境配置支持
一、说明 在我们的日常开发中,生产环境的配置和测试环境的配置以及开发环境的配置基本上都是不相同的,每次到部署环境的时候,就需要手动的切换配置文件,如果在切换的过程中一不小心的话,就会出错,所以在开发中,一般会搞个配置文件检查的功能,来避免出错,而spring boot则充分考虑了这种情况,为开发人员提供了天然的多环境配置支持。二、增加properties配置文件1、applica原创 2017-01-23 17:10:40 · 4149 阅读 · 0 评论 -
spring boot整合redis实现缓存机制
一、引入redis和jpaapplication.properties配置如下:############################################################################################jpa的配置########################################################原创 2017-02-13 20:33:08 · 6424 阅读 · 0 评论 -
spring boot集成druid数据库连接池,实现对数据库的监控
一、加入druid依赖 com.alibaba druid 1.0.27 二、在application.properties配置文件中加入druid配置# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20#原创 2017-02-13 20:34:07 · 9520 阅读 · 1 评论 -
springboot构建自己的starter
前言下面我们来通过示例来构建自己的starter pom并完成自动配置,以此来更深入的理解spring boot的工作原理。需求该starter提供PersonService,并实现自动配置PersonService一、新建一个Maven工程工程pom依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns原创 2017-02-13 22:24:33 · 11394 阅读 · 3 评论 -
spring boot-aop的使用
一、添加aop starter依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.原创 2017-02-14 22:32:02 · 7176 阅读 · 0 评论 -
spring boot启动报Unable to start EmbeddedWebApplicationContext问题解决方案
异常全文如下:org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start Embed原创 2017-03-02 16:17:27 · 49803 阅读 · 2 评论 -
springboot整合Quartz实现动态配置定时任务
前言在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。一、新建一个springboot工程,并添加依赖 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 run原创 2017-03-09 09:12:20 · 114648 阅读 · 141 评论 -
spring boot整合redis主从sentinel
一、一主二从三sentinel配置1、master:127.0.0.1:63792、slave1:127.0.0.1:63803、slave2:127.0.0.1:63814、sentinel1:127.0.0.1:263795、sentinel2:127.0.0.1:264796、sentinel3:127.0.0.1:265797、监听的主机名:mymaster原创 2017-01-18 14:56:10 · 77964 阅读 · 25 评论 -
spring boot整合JMS(ActiveMQ实现)
一、安装ActiveMQ具体的安装步骤,请参考我的另一篇博文:http://blog.csdn.net/liuchuanhong1/article/details/52057711二、新建spring boot工程,并加入JMS(ActiveMQ)依赖三、工程结构pom依赖如下:<project xmlns="http://maven.apache.org/POM原创 2017-01-18 18:55:21 · 81845 阅读 · 54 评论