-
-
(一)Ribbon
-
(二)Feign
-
(一)Eureka
-
-
(1)单机版Eureka搭建
-
(2)集群版Eureka搭建
-
(一)微服务
-
(二)微服务架构
-
(三)微服务技术栈
-
(四)springCloud简介
-
一、微服务与springCloud
-
-
二、服务注册与发现(Eureka)
-
-
三、SpringCloud负载均衡
-
-
一、微服务与springCloud
(一)微服务
微服务指的是具体解决某一个问题提供对应服务的一个服务应用 ,从技术角度来说,就是一种小而独立的处理过程,可以将其和进程类比,拥有独立的资源环境,自行创建以及销毁。
(二)微服务架构
微服务架构是种架构模式,它提倡将单应程序划分成组的服务,服务之间互相协调、互相配合,为户提供最终价值。每个服务运在其独的进程中,服务与服务间采轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进构建,并且能够被独的部署到产环境、类产环境等。另外,应当尽量避免统的、集中式的服务管理机制,对具体的个服务,应根据业务上下,选择合适的语、具对其进构建。
(三)微服务技术栈
dubbo和SpringCloud的优缺点选型?
最大区别:
SpringCloud抛弃了dubbo的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
品牌机与组装机的区别:
很明显,Spring Cloud的功能比dubBO更加强大,涵盖面更广,而且作为Spring的拳头项目,它也能够与Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而Spring Cloud就像品牌机,在Spring Source的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。
社区支持与更新力度:
最为重要的是,dubBO停止了5年左右的更新,虽然2017.7重启了。对于技术发展的新需求,需要由开发者自行拓展升级(比如当当网弄出了dubBox),这对于很多想要采用微服务架构的中小软件组织,显然是不太合适的,中小公司没有这么强大的技术能力去修改dubbo源码+周边的一整套解决方案,并不是每一个公司都有阿里的大牛+真实的线上生产环境测试过。
(四)springCloud简介
SpringCloud,基于SpringBoot提供了一套微服务解决方案(springCloud依赖springboot,而springboot可以独立成应用,SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。),包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。
二、服务注册与发现(Eureka)
(一)Eureka
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。
Eureka Server
Eureka Server 作为服务注册功能的服务器,它是服务注册中心,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
系统中的其他微服务,使用 Eureka Client连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。
EurekaClient:
EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。
(1)单机版Eureka搭建
下面举个例子来看一下springBoot中如何使用Eureka的,步骤如下
①创建服务端
springboot Initializr 快速创建一个springboot项目就不多说了。如果对springboot不熟的可以看看我写的springboot的相关博客。
-
第一步、添加服务端依赖pom.xml
-
<!--eureka-server服务端 -->
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-eureka-server</artifactId>
-
</dependency>
-
第二步、在application.yml中增加配置
-
server:
-
port: 7001
-
eureka:
-
instance:
-
hostname: localhost #eureka服务端的实例名称
-
client:
-
register-with-eureka: false #false表示不向注册中心注册自己。
-
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
-
service-url:
-
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
-
第三步、在启动类上加注解
-
@SpringBootApplication
-
@EnableEurekaServer//EurekaServer服务器端启动类,接受其它微服务注册进来
在浏览器中输入localhost:7001就 可以看到如下界面
①创建客户端(客户端也就是某个微服务)
-
第一步、添加服务端依赖pom.xml
-
<!-- 将微服务provider侧注册进eureka -->
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-eureka</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-config</artifactId>
-
</dependency>
-
就可以啦!!!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/290943.html