1.前言
做开发4年有余,很久以前就想写博客来着,一是没时间,二是嫌麻烦所以就一直搁置。几年开发下来,发现自己会的东西不少,但是却没有一个系统的梳理。借这篇博文开始,从微服务开始梳理。
微服务架构,说白了就是一套完整的分布式系统解决方案。说起分布式架构可能得先学习一下什么叫cap理论既然叫微服务,特点就是小,使服务精简化。说白了就是专业的人做专业的的事。优点就是
a.高度的自治性.独立的开发,部署,发布
b.需要异构性。在协作的过程中,我们需要去思考不同服务最适合的技术(这点很重要)
c.弹性、容错性
d.方便扩展
e.简化部署 等等
这篇博客,主要介绍基于springcloud Netflix 的注册中心Eureka。当然肯定不止这一种,我所熟知的还有consul、nacos、zookeeper等一系列产品。
我们为什么要用注册中心?
随着项目越做越大,传统的单体项目已经无法满足我们的需求(用户数量增加,业务功能增多,服务器压力变大),所以我们需要用微服务思想,对项目进行拆分,拆分后的每个模块都会再一个服务器上独立的运行,虽然解决了一些单体项目所带来的的诸多瓶颈,但是又有一个新的问题产生,就是模块与模块之间的调用,一个模块的使用可能需要依赖很多模块,例如A调用B,那么就要在A中写上B的地址,也就意味着B的部署位置要稳定,不能变,如果B要进行集群化部署,那么A就需要修改,所以耦合度是非常高的。维护的成本和部署的风险也会随之增高。接下来就要引入注册中心,它的存在完美的解决了这种高耦合的诟病,极大的降低了我们管理服务的成本。接下来就为大家介绍如何快速的搭建一个eureka注册中心。
2.服务搭建
你也可以直接创建一个maven项目,然后在pom中添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
然后是配置文件:
spring:
application:
#应用名称
name: eureka-server
eureka:
client:
#是否将自己注册到注测中心
register-with-eureka: false
#检索服务
fetch-registry: false
#默认注册地址
service-url:
defaultZone: http://localhost:8761/eureka/
server:
#启动时不能从集群节点中获取到instance注册信息的等待时间
wait-time-in-ms-when-sync-empty: 0
#服务端口
server:
port: 8761
然后在你的启动类上加上:
@SpringBootApplication @EnableEurekaServer
注解,然后直接启动你的启动类,访问localhost:8761 就可以看到服务已经启动了。
到这里一个Eureka的注册中心的服务端就已经搭建好了,很简单吧。接下来就是我们的客户端完成注册。
3.客户端服务注册
有了注册中心的服务,我们还需要将需要管理的服务,注册到注册中心上。继续上代码
在需要注册到注册中心的服务中添加下面依赖,就是eureka-client的依赖,既然有服务端就有客户端嘛。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
然后是applicaiton.yml配置:
eureka:
instance:
#注册到注册中心的服务名称
appname: eureka-cilent
client:
#注册中心地址,作为客户端你得知道你要往哪里注册吧
service-url:
defaultZone: http://localhost:8761/eureka/
server:
#端口
port: 8080
这一步完了之后在启动类上加入:@SpringBootApplication @EnableEurekaClient
这个注解,然后启动
这时访问localhost:8761 这个地址就可以看到 EUREKA-CLIENT这个服务已经注册到注册中心了。
4.总结:
本文只是简单的介绍了eureka注册中心的搭建和使用;学习一项技术,肯定不能只是学会使用,还得了解其中的原理,以及设计思想等;只有多思考,多总结才能走得更远。