SpringCloud实战之初级入门(一)— eureka注册中心
---恢复内容开始---
[toc]写在前面
我在软件行业浸泡了近十年时间,一直在做OA以及平台方面研发,带了几年团队,近两年玩过贸易、金融,现在是一名自由职业者。
近年来互联网创业浪潮一波赶过一波,技术也随着业务的提升一步步向前进,从单机模式到多机部署再到soa服务化,再到近两年微服务炙手可热;凭心而论,这些软件架构有优劣之分吗?我个人认为是没有的,之所以会有这些的架构演变,完全是因为通过互联网,大家的业务越做越大,越做越复杂,用户量也越来越多,准确的说之所以有这么多高级的软件架构,完全是因为被业务量、用户量所倒逼出来的。
如今还有单机模式的互联网应用吗?我想也应该是有的,比如广大的个人站长们,难道他们的模式就不代表先进的生产力吗?我不觉得,反而我觉得他们是互联网中最有活力的存在,软件只是工具,业务才是核心,只有越来越大的业务才有更先进的工具,你让站长们刚刚开始就上微服务,岂不是本末道置,总之一句话,请遵循业务规则,并重视业务,节约成本,要知道适合自己的才是最好的。
BB了这么多,最后分享一个问题,我们学微服务框架有用吗?当然有用,雷军说:“站在风口上,猪也会飞”,想想以前互联网中小企业因为技术而限制业务发展也是头疼,现在好了,spring全家桶帮我们解决了中小企业一直来的技术问题,现在有很多中小企业,甚至包括一线大厂也开始对其使用,为了老婆的迪奥,孩子的奥利奥,加油,学吧!
对于我自己来说,身处互联网时代却没有积极拥抱互联网,不失为遗憾。抱着学习的态度做了这个实战教程,希望自己能重拾初心,也希望能与广大网友共勉,共进步。
1.资料目录
Spring Cloud中文学习网:https://springcloud.cc/
Spring Cloud英文学习网:http://cloud.spring.io/spring-cloud-static/spring-cloud.html
2.环境介绍
工程环境:mac os + jdk 1.8.0_x + maven2 + sts 3.9.x + git
工程依赖:springboot 2.1.1 + springCloud Greenwich.RC2
3.eureka注册中心
3.1 创建工程
第一步:通过sts创建一个spring starter project
第二步:点击“next”,出现如下界面,选择Cloud Discovery下的Eureka Server:
第三步:点击“finish”,等待sts下载各个相关的jar包即可,最终形成效果如下图:
3.2 启动工程
简单的几个步骤,来启动eureka注册中心
- 我们改变一下server port,改一下application.properties后缀,为applicaiton.yml,加入server:port: 9000,改这个是一个习惯问题,不改也可以用。
- MircoServiceEurekaApplication加入“@EnableEurekaServer”,这个得解释一下,后面的教程中不再解释这些,这个注解从字面上理解是开启eureka server,实际上就是通过这个注解告诉我们要启动的应用,而Spring Cloud已经帮我们把这个eureka集成好了,我们配置配置就可以使用了,这也是为什么Spring Cloud能成为业界主流的原因。
- 正常启动就行了,看一下启动后的界面。
4.亲测的注意事项
- eureka是需要依赖springboot的父工程,在微服务中一般是单独做为工程启动的,注意不要与业务工程产生混淆,如果需要公司级的依赖关系,可以在“<dependencyManagement>”加入如下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
- springboot的版本与springCloud的版本是配套的且一一对应的,两者的版本要兼容。
- eureka在spring建工程时规定的jdk版本是1.8.0或者11,如果出现tomcat无法启动,一定要检查一下jdk版本。
- @EnableEurekaServer配置后无法启动的情况也是jdk版本问题,总之使用jdk1.8.0就对了,不要使用过高的版本,我就用过jdk10启动过,傻呼呼的启了几个小时。
- 启动后发现eureka界面无法访问,一般是springboot与springCloud的版本不兼容,当然如果不加@EnableEurekaServer的话界面也是无法访问的。
5.eureka注册中心集群高可用
注册中心的重要性,不言而喻,既然是中心,那么说明要负担很多任务,如何把注册中心配置成高可用的呢?现在我们就来学习一下,一个工程启动多个eureka注册中心。
springboot在启动可以指定参数,指定你要使用的配置文件类型,一般来说我们分为开发、测试、生产三个环境,但是如果我们要在一个工程里面启动三个一样类型的环境怎么做呢?
首先我不建议在微服务项目中大家继续使用如下规则:
application.yml
application-test.yml
application-dev.yml
application-pro.yml
最后在在application.yml中指定你要使用的环境。
我们先看一下我一般定义的命名规则:
{app-name}-{node-x}-dev.yml
{app-name}-{node-x}-test.yml
{app-name}-{node-x}-pro.yml
其中app-name代表你的应用名称,一般建议与spring.application.name一致。
node代表是否集群服务。
x可以自己定义,可以是数字,也可以是ip。
最后是开发、测试、生产环境的区分。
接着上面的例子,我们把例子中的application.yml名称改为eureka-node-1-test.yml,然后复制两个分别命名为eureka-node-2-test.yml,最后是eureka-node-3-test.yml。如图示:
然后我们修改eureka-server-node-1-test.yml的内容如下:
server:
port: 9001
spring:
application:
name: eureka-server #给你的微服务应用起一名字
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9002/eureka/,http://localhost:9003/eureka/
接着按同样的方式依次将node-2和node-3中的port修改为9002,9003,将defaultZone的把除自己之外的两个地址修改。然后打开debug config,在Arguments里面加入如下参数:
最后我们复制两个,然后依次启动这三个服务,这样我们的eureka server的集群部署就完成了。最终效果如图所示:
至此我们的eureka集群就完成了。
6.结语
首先,这是我第一次写教程类文章,为了区别与其他教程,我准备不讲任何概念,我觉得能玩到spring cloud这步的“猿类”们,基本上对软件架构、各种理念都有了解,而且基本上都有自己的理解。对此不理解的朋友们,请自行百度一下相关的概念。
我更希望更多刚接触spring cloud的朋友们,能通过你的手指去感知它,而不是仅仅存在听别人说,听别人讲,或者自己臆想的东西。在编程领域能动手的绝不动口,我以前的一个导师就说过,同样的程序写二十遍,基本上能学的东西都融会贯通了。
好了,第一篇文章废话有点多,后面不会有了。😃
7.一点点重要的事情
- 教程中所有的步骤都由我自己从零搭建测试。
- 文章对应的源代码地址:github-SpringCloud实战之初级入门(一)— eureka注册中心
- 文章对应的视频地址:
写在前面
我在软件行业浸泡了近十年时间,一直在做OA以及平台方面研发,带了几年团队,近两年玩过贸易、金融,现在是一名自由职业者。
近年来互联网创业浪潮一波赶过一波,技术也随着业务的提升一步步向前进,从单机模式到多机部署再到soa服务化,再到近两年微服务炙手可热;凭心而论,这些软件架构有优劣之分吗?我个人认为是没有的,之所以会有这些的架构演变,完全是因为通过互联网,大家的业务越做越大,越做越复杂,用户量也越来越多,准确的说之所以有这么多高级的软件架构,完全是因为被业务量、用户量所倒逼出来的。
如今还有单机模式的互联网应用吗?我想也应该是有的,比如广大的个人站长们,难道他们的模式就不代表先进的生产力吗?我不觉得,反而我觉得他们是互联网中最有活力的存在,软件只是工具,业务才是核心,只有越来越大的业务才有更先进的工具,你让站长们刚刚开始就上微服务,岂不是本末道置,总之一句话,请遵循业务规则,并重视业务,节约成本,要知道适合自己的才是最好的。
BB了这么多,最后分享一个问题,我们学微服务框架有用吗?当然有用,雷军说:“站在风口上,猪也会飞”,想想以前互联网中小企业因为技术而限制业务发展也是头疼,现在好了,spring全家桶帮我们解决了中小企业一直来的技术问题,现在有很多中小企业,甚至包括一线大厂也开始对其使用,为了老婆的迪奥,孩子的奥利奥,加油,学吧!
对于我自己来说,身处互联网时代却没有积极拥抱互联网,不失为遗憾。抱着学习的态度做了这个实战教程,希望自己能重拾初心,也希望能与广大网友共勉,共进步。
1.资料目录
Spring Cloud中文学习网:https://springcloud.cc/
Spring Cloud英文学习网:http://cloud.spring.io/spring-cloud-static/spring-cloud.html
2.环境介绍
工程环境:mac os + jdk 1.8.0_x + maven2 + sts 3.9.x + git
工程依赖:springboot 2.1.1 + springCloud Greenwich.RC2
3.eureka注册中心
3.1 创建工程
第一步:通过sts创建一个spring starter project
第二步:点击“next”,出现如下界面,选择Cloud Discovery下的Eureka Server:
第三步:点击“finish”,等待sts下载各个相关的jar包即可,最终形成效果如下图:
3.2 启动工程
简单的几个步骤,来启动eureka注册中心
- 我们改变一下server port,改一下application.properties后缀,为applicaiton.yml,加入server:port: 9000,改这个是一个习惯问题,不改也可以用。
- MircoServiceEurekaApplication加入“@EnableEurekaServer”,这个得解释一下,后面的教程中不再解释这些,这个注解从字面上理解是开启eureka server,实际上就是通过这个注解告诉我们要启动的应用,而Spring Cloud已经帮我们把这个eureka集成好了,我们配置配置就可以使用了,这也是为什么Spring Cloud能成为业界主流的原因。
- 正常启动就行了,看一下启动后的界面。
4.亲测的注意事项
- eureka是需要依赖springboot的父工程,在微服务中一般是单独做为工程启动的,注意不要与业务工程产生混淆,如果需要公司级的依赖关系,可以在“<dependencyManagement>”加入如下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
- springboot的版本与springCloud的版本是配套的且一一对应的,两者的版本要兼容。
- eureka在spring建工程时规定的jdk版本是1.8.0或者11,如果出现tomcat无法启动,一定要检查一下jdk版本。
- @EnableEurekaServer配置后无法启动的情况也是jdk版本问题,总之使用jdk1.8.0就对了,不要使用过高的版本,我就用过jdk10启动过,傻呼呼的启了几个小时。
- 启动后发现eureka界面无法访问,一般是springboot与springCloud的版本不兼容,当然如果不加@EnableEurekaServer的话界面也是无法访问的。
5.eureka注册中心集群高可用
注册中心的重要性,不言而喻,既然是中心,那么说明要负担很多任务,如何把注册中心配置成高可用的呢?现在我们就来学习一下,一个工程启动多个eureka注册中心。
springboot在启动可以指定参数,指定你要使用的配置文件类型,一般来说我们分为开发、测试、生产三个环境,但是如果我们要在一个工程里面启动三个一样类型的环境怎么做呢?
首先我不建议在微服务项目中大家继续使用如下规则:
application.yml
application-test.yml
application-dev.yml
application-pro.yml
最后在在application.yml中指定你要使用的环境。
我们先看一下我一般定义的命名规则:
{app-name}-{node-x}-dev.yml
{app-name}-{node-x}-test.yml
{app-name}-{node-x}-pro.yml
其中app-name代表你的应用名称,一般建议与spring.application.name一致。
node代表是否集群服务。
x可以自己定义,可以是数字,也可以是ip。
最后是开发、测试、生产环境的区分。
接着上面的例子,我们把例子中的application.yml名称改为eureka-node-1-test.yml,然后复制两个分别命名为eureka-node-2-test.yml,最后是eureka-node-3-test.yml。如图示:
然后我们修改eureka-server-node-1-test.yml的内容如下:
server:
port: 9001
spring:
application:
name: eureka-server #给你的微服务应用起一名字
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9002/eureka/,http://localhost:9003/eureka/
接着按同样的方式依次将node-2和node-3中的port修改为9002,9003,将defaultZone的把除自己之外的两个地址修改。然后打开debug config,在Arguments里面加入如下参数:
最后我们复制两个,然后依次启动这三个服务,这样我们的eureka server的集群部署就完成了。最终效果如图所示:
至此我们的eureka集群就完成了。
6.结语
首先,这是我第一次写教程类文章,为了区别与其他教程,我准备不讲任何概念,我觉得能玩到spring cloud这步的“猿类”们,基本上对软件架构、各种理念都有了解,而且基本上都有自己的理解。对此不理解的朋友们,请自行百度一下相关的概念。
我更希望更多刚接触spring cloud的朋友们,能通过你的手指去感知它,而不是仅仅存在听别人说,听别人讲,或者自己臆想的东西。在编程领域能动手的绝不动口,我以前的一个导师就说过,同样的程序写二十遍,基本上能学的东西都融会贯通了。
好了,第一篇文章废话有点多,后面不会有了。😃
7.一点点重要的事情
- 教程中所有的步骤都由我自己从零搭建测试。
- 文章对应的源代码地址:github-SpringCloud实战之初级入门(一)— eureka注册中心
- 文章对应的视频地址:爱奇艺-SpringCloud实战之初级入门(一)— eureka注册中心