开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(二十三)-阿里云开发者社区

开发者社区> 【开发者学堂】官方技术圈> 正文
登录阅读全文

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(二十三)

简介: Spring Cloud微服务架构设计与开发实战课时3.2—Spring Cloud微服务注册与发现 。Java Spring Cloud是全球范围内最成熟、最完善、最流行的微服务架构方案体系。被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦!

哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节三的Spring Cloud微服务注册与发现 ”干货总结~是一起学习新课程吧!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Spring Cloud微服务注册与发现 

课程地址:https://developer.aliyun.com/learning/course/60/detail/1095

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java


Spring Cloud微服务注册与发现 


一、Spring Cloud服务注册与发现 

对于微服务务需要先进行拆分,微服务实例部署数量不固定,可以弹性伸缩,与传统架构不一样,比较靠拢云计算、云原生。 

(一)服务注册与发现 

解决大规模服务集群的注册和发现问题主要为了方便客户端调用。比如开发一个微服务是订单服务,开始只启用一台服务器,客户端和客户端直接调用微服务就可以了。但如果启用两台以上客户端直接写服务的IP地址做轮巡是不行的,因为如果遇到类似双11促销场,需要增加很多台服务,且是弹性不定数量增加,这时候最好有一种方案能够解决这个问题,把客户端和服务集群 

里面很重要的就是注册中心,注册中心可以帮助管理服务,当只有一个两个服务的时候,客户端可以直接和服务建立连接,当服务数量不固定,且伸缩范围很大时,需要一个专门的机构帮管理这些服务。 

服务注册与发现总结: 

1. 大规模微服务集群架构 

2. 许多服务实例 

3. 客户端要找到自己调用的服务 

4. 新服务上线 

5. 某个服务机,下线 

6. 实时监控服务的状态 

image.png 

 

(二)Spring Cloud Eureka服务发现与注册 

微服务架构体系里 Netflix公司贡献了其中一个很重要的项目叫Eureka主要解决服务注册中心的问题。在大数据里面同类型的产品ZooKeeperSpring Cloud通过扩展组件可以进行集成。 

本节课主要讲实战开发,建立注册中心以后,怎么样把微服务注册进去怎么让注册中心服务。总结: 

1. Netflix公司开源的项目 

2. Eureka:注册中心 

3. 一个基于 REST 的中心服务,管理服务, 

4. 实现云端的服务注册和服务发现。 

5. Eureka组件组成:Eureka服务器和Eureka客户端 

6. 竞争对手ZooKeeper 

7. 服务发现模块(Eureka)是Netflix的核心 

8. Spring Cloud Netflix提供的简化开发模板 

9. 直接使用spring boot,创建项目 

10. 添加 EnableEurekaServer开发注册服务中心 

()Spring Cloud 架构图 

下图所示微服务架构图,注册中心,客户端微服务上线注册微服务实数量是动态的,有可能是一台,也有可能是很多台灵活弹性根据客户端的压力做弹性伸缩。 

客户端调用时直接找微服务先找注册中心,有哪些好的微服务,有哪些匹配的每次搜索最新的报表然后调用。客户端也可以按照各种负载均衡的策略去调,或者结合一些负责运行的算法灵活调度。 

image.png 

 

二、Eureka注册中心开发实战 

(一)Spring Eureka注册中心 

1. 创建Eureka服务注册中心项目;  

2. 添加@ EnableEurekaServer 

3. 将spring boot应用改造成Eureka服务注册中心; 

4. application.properties增加配置;  

5. 打包项目;  

6. 运行;  

7. 测试页面;  

8. 参考https://spring.io/guides/gs/service-registration-and-discovery/ 

image.png 

 

(二)application.properties配置 

 server.port=8761 

 eureka.client.register-with-eureka=false 

 eureka.client.fetch-registry=false 

 eureka.client.serviceUrl.defaultZone=http://localhost:${ser 

ver.port}/eureka/ 

 logging.level.com.netflix.eureka=OFF 

 logging.level.com.netflix.discovery=OFF 

(三)创建Spring Eureka服务项目 

演示部分: 

下图所示,是正常运行界面。 

image.png 

这里还没有服务实下面演示开发微服务,把微服务注册进来打开Eclipse开发工具,新建项目插件里面会有New Spring Sttarter Project模板,Name 栏加入Eureka,下面直接配公司的域名就行Group 栏输入com.alibaba,点击下一步,如下图所示: 

image.png 

Available栏输入Eureka,加入注册中心服务端,为了开发调试再加入dev,用于加载动态调试工具,做动态调试服务。演示版本是2.4.1,再下一步: 

image.png 

下一步 

image.png 

这里面会生成项目,Maven会自动来去拉包,第一次拉包时间比较久,网络好应该会快一点Maven仓库改成阿里或其他公司,国内应该有很多Maven仓库镜像。 

先来改配置文件,这里关键是加注解,启用EurekaServer, EurekaServer自动跟进配置,制作在某个端口上,包括注册中心的界面,会提供注册地址,在之前的例子上是提供Rest API, 供客户端注册。 

第一步是,启动@ EnableEurekaServer,使服务器具备注册中心的能力,这一步非常重要。 

image.png 

 

接下配一下配置文件,配置文件有几个核心参数,程序名和端口,程序名输入EurekaServer端口不配的话就是默认的8080,因为官方例子是8761,我们也配置8761。还需要配置Eureka的注册客户端,如下图所示:“http://localhost:8761/eureka注册中心的地址,给客户端注册和查找用的 

image.png 

接下来启动程序,直接右键,选Run As ,有两种启动方式,1.jave Application,2.Spring Boot APP,两种都可以启动。 

image.png 

 

启动成功之后,打开浏览器,输入http://localhost:8761回车,出现Eureka注册中心的界面。里面一有个服务实例,这个实例默认没有关掉,自己可以往自己中心的注册,正常并不需要,自己往自己中心的注册实际是多余的。在比较底的版本会显示出错。 

image.png 

 

可以配置关闭上面的服务实例,输入“eureka.client.fetch-registry=false”,“eureka.client.register-with-eurka=falsr”。 

image.png 

重新加载后,打开eureka界面,可以看到,自己往自己中心注册的实例就没有了。 

image.png 

 

三、Eureka底层原理与源码分析 

(一)Netflix Eureka源码 

•Eureka 官方源码 

https://github.com/Netflix/eureka 

•Spring Cloud Netflix 适配 Eureka 的代码 

https://github.com/spring-cloud/spring-cloud-netflix 

(二)Eureka源码分析 

Eureka通信基于Http(s)协议的框架 

1. 纯正的 servlet 应用,需构建成war包部署 

2. 使用了 框架实现自身的 HTTP接口 

3. peer之间的同步与服务的注册全部通过 HTTP 协议实现 

4. 定时任务(发送 、定时清理过期服务、节点同步等)通过 JDK 自带的 Timer 实现 

5. 内存缓存使用Google的 包实现 

(三)服务实例Instance的状态 

1. Up 

2. Down 

3. Starting 

4. Out_Of_Service 

5. Unknown 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云开发者学堂,是开发者学习成长的一站式学习平台。平台源源不断的生产优质体系化课程、优质内容如电子书、直播、体验场景、训练营等,为开发者构建完善的学习成长体系,为开发者赋能。目前,开发者学堂包含数据库、大数据、云原生、AI、IoT等各大热门领域精品课,全部免费对开发者开放。

官方博客
最新文章
相关文章
官网链接