一 什么是springcloud
官网的说法:微服务架构集大成者,云计算最佳业务实践。
百度百科的说法:Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
二 springcloud和dubbo的比较
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。
dubbo由于是二进制的传输,占用带宽会更少。
springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大
dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决
springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级
dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心只能用eureka或者自研。
如果您也想关注dubbo,可以查看作者的dubbo教程系列: [https://blog.csdn.net/wx5040257/category_7113855.html]
三 搭建Eureka服务注册中心
Eureka介绍:Spring Cloud Eureka是Spring Cloud Netflix 微服务套件的一部分,主要负责完成微服务架构中的服务治理功能。服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。本篇通过一个案例先来演示如何搭建注册中心,下一篇再叙述服务提供者,服务消费者并以此演示Eureka服务治理功能。
本文使用的开发工具是eclipse mars版,jdk1.8,springboot1.5.9,springcloud Camden版。
第一步,建立maven工程,如下图所示:
找到maven project
创建一个没有骨架的简单maven工程,如图:
输入group id和Artifact id,如图:
点击Finish完成。
第二步:编写代码
添加maven依赖,如下代码:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wx</groupId>
<artifactId>eureka_center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!-- 使用dependencyManagement进行版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 引入eureka server依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 设置通过jdk1.8编译项目 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<!-- 拷贝resouce资源到output directory -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 可通过maven命令运行项目和打包运行 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>
这时候项目会报错,因为maven里配置的是jdk1.8,而eclipse建立工程用的是jdk 1.5,如图
可以用maven命令更新一下,如图所示:
编写springboot配置文件,如图所示:
这里注册中心是用的主机名的方式,也可以用ip地址,后面会讲到
创建启动类,如图:
这里最重要的是@EnableEurekaServer注解,用来指定该项目为Eureka的服务注册中心。
好了,注册中心搭建完毕,接下来运行一下吧,结果如下图:
如果想把注册中心放到远程主机运行,那么就先用maven命令打包: 项目上单击右键|Run as|Maven build…,如图:
把打包后的jar包上传到远程linux主机,如图所示:
启动命令运行:
查看远程主机名,如图:
在windows里面的hosts文件中添加一行,让本机能够识别远程主机,注意还要在linux远程主机上开放911端口。
在浏览器中访问,如图所示:
Ok,本篇重点讲述了Eureka服务注册中心。