一个C#开发者学习SpringCloud搭建微服务的心路历程

前言
Spring Cloud很火,很多文章都有介绍如何使用,但对于我这种初学者,我需要从创建项目开始学起,所以这些文章对于我的启蒙,帮助不大,所以只好自己写一篇文章,用于备忘 。
SpringCloud是封装了Netflix公司开发的Eureka模块来实现服务注册和发现 。下图为Spring Cloud Eureka的本版列表:
【一个C#开发者学习SpringCloud搭建微服务的心路历程】

一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
下图为Spring Cloud 微服务的各个实现的总览 。
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
创建父项目
首先,我们打开IEDA创建项目,然后选择Maven选项,然后点击下一步,如下图:
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
创建完成后,是一个空的Java父项目,如下图:
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
创建服务查询中心子项目——EurekaServer
EurekaServer是用于服务查询的,C#开发者可能更熟悉consul,虽然用法不一样,但实现的效果是一样的 。
现在我们创建一个服务查询中心项目,在项目上右键-->new-->Module-->Spring Initializr-->next,选择和父类项目同一版本的jdk,如下图:
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
然后选择SpringCloudDiscovery—EurekaServer,如下图:
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
创建完成如下图所示:
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
打开新建的项目的入口文件——EurekaserverApplication,为EurekaserverApplication类增加注解@EnableEurekaServer,这个注解会将当前类标记为Eureka Server 。
一个C#开发者学习SpringCloud搭建微服务的心路历程

文章插图
然后修改application.properties为application.yml,编写代码如下:
# 配置启动端口server:port: 5180# 配置eurekaeureka:instance:hostname: localhostclient:fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这里设置为falseregister-with-eureka: false # 表示是否将自己注册到Eureka Server,默认为true.由于当前应用就是Eureka Server,故而设置为false.service-url:# 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.默认是http://localhost:8761/eureka/;多个地址可使用','风格.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/可以看到,上面的配置eureka的hostname是localhost,这个是属于服务器端的配置,但还配置了client,里面配置的内容是不把自己作为服务注册到Eureka Server服务查询中,这个配置会让我们看不懂,为什么服务器查询要配置是否把自己注册进服务查询呢?这样配置的确有点奇怪,调查发现,eureka中的服务端也是个客户端,这样做的目的是为了让服务端也可以互相注册,实现高可用,但这样的配置模式,确实很容易让人误解,不过既然已经使用了eureka,我们只能死记硬背了 。
PS:具体可以搜索org.springframework.cloud.netflix.eureka. EurekaClientConfigBean来查找相关属性如何配置 。
配置好EurekaServer后,我们使用IDEA调试项目,然后在浏览器输入:http://localhost:5180/,EurekaServer运行成功,如下图:
一个C#开发者学习SpringCloud搭建微服务的心路历程

经验总结扩展阅读