你好,我是忆~遂愿,全网3w+粉丝,《遂愿盈创》社群主理人。
副业启航① | 遂愿盈创(对副业感兴趣免费可入,多种赚钱实战项目等你来,一起探寻副业快速变现的途径;以及对接互联网大厂商务合作,一起来搞点小外快,认识更多互联网大咖)
目前群里已经带很多小伙伴(大部分大学生)变现几百块啦,程序员搞副业有额外加成~ 对副业感兴趣可+V : suiyuan2ying 拉你进群。
文章目录
1 初入微服务架构2 技术栈选型3 服务注册与发现3.1 Eureka Server配置3.2 微服务配置3.3 用户服务接口 4 服务调用4.1 服务配置4.2 服务接口 5 微服务架构测试6 实际案例6.1 创建Eureka Server6.2 创建用户服务6.3 创建订单服务6.4 服务测试 7 总结与展望
本文将使用过去的商业项目来探讨如何使用Java和Spring Boot框架设计一个微服务架构,重点实现服务的注册、发现和调用,很多打码了,请见谅,最后会有一个简单的demo。
1 初入微服务架构
微服务架构是一种将单一应用程序划分为一组小的、独立服务的架构风格。每个微服务负责特定功能,并通过轻量级的协议(如HTTP REST)进行通信。
在当今快速发展的Java开发领域, 微服务架构因其灵活性、可扩展性及快速迭代能力而受到广泛关注。
2 技术栈选型
在过去的实战项目用Spring Boot来搭建微服务架构,同时利用Spring Cloud来处理服务的注册、发现和治理。
当时选择的是 Java8 + Spring Boot 能快速构建微服务,减少配置麻烦,以及使用Spring Cloud提供的工具,比如Eureka、Ribbon、 Hystrix 等组件,让服务管理变得简单。
其它的细节这里就不具体展开了,主要围绕本篇文章Eureka注册中心进行展开。
3 服务注册与发现
在微服务架构中,服务注册与发现是实现服务间通信的基础,下文使用项目中的Spring Cloud Eureka来复现这一功能。
3.1 Eureka Server配置
引入依赖 在application.yml
文件配置 在主类中添加@EnableEurekaServer
注解启动Eureka Server 3.2 微服务配置
引入依赖 在application.yml
文件中配置Eureka客户端 在主类中添加@EnableEurekaClient
注解启动Eureka 客户端 3.3 用户服务接口
项目一个大模块下小模块的接口示例。4 服务调用
4.1 服务配置
使用声明式HTTP客户端 Feign,来简化RESTful服务的调用,使代码更为简洁。
引入依赖 开启客户端 Eureka配置4.2 服务接口
其中一个获取登录账户接口
5 微服务架构测试
在完成上述配置后,可以通过启动所有的微服务来测试微服务架构。访问Eureka Dashboard(我本地部署是在http://localhost:8082
)可以看到已注册的服务。
后面可以通过HTTP客户端(如Postman)发送请求来进行测试,这里我就不掩饰了,接下来我用一个简单的案例,感兴趣的小伙伴可以自己去尝试部署跑通。
6 实际案例
使用两个简单的微服务来实现。
一个用户服务和一个订单服务。用户服务将注册到Eureka服务器上,而订单服务将通过Eureka发现用户服务并进行调用。
6.1 创建Eureka Server
创建Spring Boot项目,选择相应的依赖项。
配置Eureka Server,在application.yml
中添加如下配置:
server: port: 8082eureka: client: register-with-eureka: false fetch-registry: false
在主类中添加@EnableEurekaServer
注解: @SpringBootApplication@EnableEurekaServerpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }}
6.2 创建用户服务
创建Spring Boot项目,选择相应的依赖项。
配置用户服务, 在application.yml
中添加如下配置:
server: port: 8083spring: application: name: user-service eureka: client: service-url: defaultZone: http://localhost:8082/eureka/
创建一个简单的用户控制器 : @RestController@RequestMapping("/users")public class UserController { private Map<Long, String> users = new HashMap<>(); @PostMapping public void createUser(@RequestParam Long id, @RequestParam String name) { users.put(id, name); } @GetMapping("/{id}") public String getUser(@PathVariable Long id) { return users.getOrDefault(id, "User not found"); }}
6.3 创建订单服务
创建Spring Boot项目,选择相应的依赖项。
配置订单服务, 在application.yml
中添加如下配置:
server: port: 8084spring: application: name: order-service eureka: client: service-url: defaultZone: http://localhost:8082/eureka/
创建一个订单控制器调用用户服务: @RestController@RequestMapping("/orders")public class OrderController { @Autowired private RestTemplate restTemplate; @PostMapping("/{userId}") public String createOrder(@PathVariable Long userId) { String user = restTemplate.getForObject("http://user-service/users/" + userId, String.class); return "Order created for user: " + user; }}
在订单服务的主类中配置RestTemplate
: @SpringBootApplication@EnableDiscoveryClientpublic class OrderServiceApplication { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); }}
将Eureka Server,用户服务,订单服务启动。 6.4 服务测试
测试用户服务// 使用Postman或curl创建用户POST http://localhost:8083/users?id=1&name=John// 查询用户GET http://localhost:8083/users/1
测试订单服务 // 创建订单,查询用户信息:POST http://localhost:8081/orders/1// 结果Order created for user: John
验证Eureka Dashboard 打开浏览器,访问http://localhost:8082
,可以看到user-service
和order-service
的注册信息。
7 总结与展望
通过本文的示例,展示了如何使用Java和Spring Boot框架设计一个微服务架构,并实现服务的注册、发现和调用。
对于这种架构设计来说,不仅提升了系统的可维护性和可扩展性,还使得团队能够更快速地响应业务需求。
希望本文能为有志于微服务架构设计的开发者提供一些启示和帮助。
必须从过去的错误学习教训而非依赖过去的成功