为什么学习微服务架构?学习微服务架构需要那些技术储备?
1、在我们刚接触的项目当中大部分都是单体架构(除了一线互联网公司),单体结构的特点就是以满足业务需求是第一位,技术实现其次所以业务量不是跟大比如一些公司的内部使用系统。设想如果用户量、业务量很大呢单体架构很难支撑,所以我们要采用微服务架构解决高并发的问题。
2、技术储备首先要学习Spring Boot框架(可查看我的文章SpringBoot篇),因为Spring Cloud架构是在Spring Boot就框架的基础上进行开发和搭建,也可以理解为多个Spring Boot项目放在一起就是一个分布式Spring Cloud项目
这只是创建项目结构也可实现,具体实现细节可详见我的文章:分布式微服务Spring Cloud框架搭建详细流程_中等篇。
提示:以下是本篇文章正文内容,下面案例可供参考
点击 + Create New Project 创建新的项目
点击 Maven 然后 Next
Groupld:定义了项目属于哪个组,举个例子,如果你的公司是com,有一个项目为zhx,那么groupId就应该是com.zhx
Artifactld:项目名称(总架构项目的名称)
点击 Next
检查项目名称及工作空间目录路径 没问题点击 Finish
点击 File ----> Settings
配置Maven:File —> Settings —> Build, Execution, Deployment —> Build Tools —> Maven
User settings file:你maven服务的conf文件夹的settings.xml文件
Local repository:本地仓库的路径(存放从中央仓库、阿里云镜像下载的Jar包)
选中项目点击右键 New---->Module
选中1、Spring Initializr 2、 钩住Default
然后点击 Next
Group:项目坐标
Artifact: 注册中心服务的项目名称
然后点击 Next
选中 Spring Cloud Discovery -------> Eureka Server
然后点击 Next
然后点击 Finish
在总架构的基础上已创建注册中心服务
pom.xml添加依赖(如果你是按照以上步骤操作,都是自动添加的依赖)
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
dependency>
配置文件在resource文件夹下创建application.yml配置文件
server:
port: 10000 #端口号
spring:
application:
name: eureka-service #服务名
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10000/eureka
register-with-eureka: false #不注册自己,列表当中看不到自己
fetch-registry: false #不注册自己
选中项目点击右键 New---->Module
选中Maven 点击 Next
点击 Next
点击 Finish
在总架构的基础上已创建注册中心服务
选中项目点击右键 New---->Module
选中Maven 点击 Next
点击 Next
点击 Finish
在总架构的基础上已创建生产者服务
pom.xml添加依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.1.1version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>org.apache.tomcat.embedgroupId>
<artifactId>tomcat-embed-jasperartifactId>
<scope>providedscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
dependencies>
配置文件在resource文件夹下创建application.yml配置文件
spring:
application:
name: producer-service #服务名称
datasource:
username: root ##数据库用户,改成自己的
password: root ##数据库密码,改成自己的
url: jdbc:mysql://localhost:MySql/MySql?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
server:
port: 8083 #服端口号
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10000/eureka
instance:
prefer-ip-address: true # 当调用getHostname获取实例的,返回ip而不是host名称
ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
选中项目点击右键 New---->Module
选中Maven 点击 Next
点击 Next
点击 Finish
在总架构的基础上已创建消费者服务
pom.xml添加依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-openfeignartifactId>
dependency>
配置文件在resource文件夹下创建application.yml配置文件
spring:
application:
name: consuming-service #服务名称
server:
port: 8082 #端口号
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10000/eureka
instance:
prefer-ip-address: true # 当调用getHostname获取实例的,返回ip而不是host名称
ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
选中项目点击右键 New---->Module
选中Maven 点击 Next
点击 Next
点击 Finish
在总架构的基础上已创建网关服务服务
pom.xml添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-zuulartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
dependencies>
配置文件在resource文件夹下创建application.yml配置文件
spring:
application:
name: zuul-server ##服务名称
server:
port: 10088 ##端口号
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10000/eureka
instance:
prefer-ip-address: true # 当调用getHostname获取实例的,返回ip而不是host名称
ip-address: 127.0.0.1 # 指定自己的ip信息,不指定的话会自己寻找
#instance-id: zuul.com
zuul:
#ignored-services:
prefix: /api #请求前缀
routes:
producer-service: /aa/** #通过http://localhost:10088/api/aa/hello
consuming-service: /bb/** #通过http://localhost:10088/api/bb/xhello访问
备注:SpringCloud组件,以及版本号要对应上,否则会出现版本不一致的情况
1、项目当中要是想根据技术选型实现业务需求,在项目总结构当中根据以上步骤创建服务项即可(组件说明见上边图片Component)
2、结合下面这个图来看,能够清晰每个组件是干什么用的
提示:当然这只是阐述一下微服务项目开发的一个基本的流程,一个微服务的项目服务会有跟多,可以引用相关组件来实现业务需求,但是如果服务比较多接口定义一定要规范并且要汇总接口调用基线,可参考我的文章:分布式微服务Spring Cloud框架搭建详细流程_中等篇。