一、概念
基于springboot基础上用于快速构建分布式系统的通用模式的工具集。
二、特点
1、约定优于配置;
2、隐藏组件复杂性;
3、轻量级组件;
4、组件丰富,功能齐全,例如:服务发现、断路器、微服务网关等;
5、选型中立、丰富;
6、灵活。
三、服务消费者与服务提供者
在微服务架构中有两种角色:服务消费者与服务提供者,二者关系如下:
服务提供者:服务的被调用者
服务消费者:服务的调用者
例如,在电影系统中,用户购买电影票票之前,电影服务需要调用用户服务的接口获取用户信息,此时的电影服务就是调用方,即服务消费者,用户服务为被调用方,即服务提供者。
四、微服务实践
1、服务提供者:用户服务
项目结构如下:
这个demo主要是为了演示服务与服务之间的通信,因此不再配置数据源。
user.java
iuserservice.java
userserviceimpl.java
usercontroller.java
returnutil.java
application.yml
启动项目后访问:http://localhost:8010/user/getuserinfo?userid=1
得到相应:
表示接口已通。
2、服务消费者:电影服务
项目架构如下:
user.java和returnutil.java与上例相同在此不再展示。
movieapplicaiton.java
moviecontroller.java
此时启动项目,访问:http://localhost:8020/movie/findbyid?userid=1
得到响应:
至此,一个简单的电影微服务就完成了。
五、上述例子中存在的问题
1、在代码中写死访问路径
在电影服务中,可以将user服务的访问路径写到yml配置文件中,使代码更清爽:
yml:
2、适用场景有限:当用户服务的地址或端口号发生改变时,需要修改电影服务的配置文件并且重新部署,这显然是不可取的。