分类 Java 下的文章

之前用过服务消费者调用服务提供者的时候使用RestTemplate技术,存在几个不便之处:拼接urlrestTemplate.getForObJect这两处代码都比较模板化,能不能不写这种模板化的东⻄另外来说,拼接url显得很low,拼接字符串,拼接参数,很low还容易出错Feign简介Feign是Netflix开发的一个轻量级RESTful的HTTP服务客户端(用它来发起请求,远程调用的),是以Java接口注解的方式调用Http...

阅读全文 »

Hystrix熔断器属于一种容错机制。微服务中的雪崩效应微服务中,一个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。假设存在一个微服务,那上游微服务对它的调用叫做“扇入”,它对下游微服务的调用叫做“扇出”。扇入:代表着该微服务被调用的次数,扇入大,说明该模块复用性好。扇出:该微服务调用其他微服务的个数,扇出大,说明业务逻辑复杂。扇入大是一个好事,扇出大不一定是好事。在微服务架构中,一个应用可能会有多个微服务组成,微服务...

阅读全文 »

关于负载均衡负载均衡一般分为服务器端负载均衡和客户端负载均衡。所谓服务器端负载均衡,比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法将请求路由到目标服务器处理。所谓客户端负载均衡,比如我们要说的Ribbon,服务消费者客户端会有一个服务器地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负载均衡算法的执行是在请求客户端进行。Ribbon是Netflix发布的负载均衡器。Eureka一般...

阅读全文 »

关于服务注册中心服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者(比如一个微服务部署多个实例),这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB(负载均衡)机制(就是在配置文件中写死服务实例的列表信息,负载均衡策略从这个配置文件中读取)就不再适用了,需要...

阅读全文 »

RestTemplate案例代码在使用Spring Cloud开发之前,可以先做一个小案例来感受一下远程调用会出现哪些问题。在Spring Boot和Restful开发的几个微服务之间进行远程调用会有很多组件和方法可供选择,其中比较方便的就有Spring的RestTemplate,它一般在消费端使用,用来调用其他服务端的远程方法。在消费端的Spring Boot启动类中:/** * 注入RestTemplate * @retu...

阅读全文 »

Spring Cloud是什么Spring Cloud是一系列框架的有序集合,是一套用于构建微服务架构的规范,而不是一个可以拿来即用的框架(所谓规范就是应该有哪些功能组件,然后组件之间怎么配合,共同完成什么事情)。它利用Spring Boot的开发便利性简化了微服务架构的开发(自动装配),用于开发服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。在这个规范之下第三方的Netflix公司开发了一些组件、Spring官方...

阅读全文 »

互联网应用架构发展随着用户群体逐渐扩大,网站的流量成倍增长,常规的单体架构已无法满足请求压力和业务的快速迭代,下面我们以一个招聘系统为例,从最开始的单体架构分析,一步步演变到现在的微服务架构。单体应用架构最初,用户量、数据量规模都比较小,项目所有的功能模块都放在一个工程中编码、编译、打包并且部署在一个Tomcat容器中,这种架构模式就是单体应用架构,这样的架构既简单实用、便于维护,成本又低,成为了当时的主流架构方式。优点:项目前期...

阅读全文 »