3大关键点教你用Java和Spring Boot快速构建微服务架构:从零开发到高效服务注册与发现的逆袭之路

你好,我是忆~遂愿,全网3w+粉丝,《遂愿盈创》社群主理人。

副业启航① | 遂愿盈创(对副业感兴趣免费可入,多种赚钱实战项目等你来,一起探寻副业快速变现的途径;以及对接互联网大厂商务合作,一起来搞点小外快,认识更多互联网大咖)

目前群里已经带很多小伙伴(大部分大学生)变现几百块啦,程序员搞副业有额外加成~ 对副业感兴趣可+V : suiyuan2ying 拉你进群。

文章目录

    • 1 初入微服务架构
    • 2 技术栈选型
    • 3 服务注册与发现
      • 3.1 Eureka Server配置
      • 3.2 微服务配置
      • 3.3 用户服务接口
    • 4 服务调用
      • 4.1 服务配置
      • 4.2 服务接口
    • 5 微服务架构测试
    • 6 实际案例
      • 6.1 创建Eureka Server
      • 6.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配置

  1. 引入依赖
  1. application.yml文件配置
  1. 在主类中添加@EnableEurekaServer注解启动Eureka Server

3.2 微服务配置

  1. 引入依赖
  1. application.yml文件中配置Eureka客户端
  1. 在主类中添加@EnableEurekaClient注解启动Eureka 客户端

3.3 用户服务接口

  1. 项目一个大模块下小模块的接口示例。

4 服务调用

4.1 服务配置

使用声明式HTTP客户端 Feign,来简化RESTful服务的调用,使代码更为简洁。

  1. 引入依赖
  1. 开启客户端
  1. Eureka配置

4.2 服务接口

其中一个获取登录账户接口

5 微服务架构测试

在完成上述配置后,可以通过启动所有的微服务来测试微服务架构。访问Eureka Dashboard(我本地部署是在http://localhost:8082)可以看到已注册的服务。

后面可以通过HTTP客户端(如Postman)发送请求来进行测试,这里我就不掩饰了,接下来我用一个简单的案例,感兴趣的小伙伴可以自己去尝试部署跑通。

6 实际案例

使用两个简单的微服务来实现。

一个用户服务和一个订单服务。用户服务将注册到Eureka服务器上,而订单服务将通过Eureka发现用户服务并进行调用。

6.1 创建Eureka Server

  1. 创建Spring Boot项目,选择相应的依赖项。

  2. 配置Eureka Server,在application.yml中添加如下配置:

yaml 复制代码
server:
  port: 8082

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  1. 在主类中添加@EnableEurekaServer注解:
java 复制代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

6.2 创建用户服务

  1. 创建Spring Boot项目,选择相应的依赖项。

  2. 配置用户服务, 在application.yml中添加如下配置:

yaml 复制代码
server:
  port: 8083

spring:
  application:
    name: user-service
  eureka:
    client:
      service-url:
        defaultZone: http://localhost:8082/eureka/
  1. 创建一个简单的用户控制器 :
java 复制代码
@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 创建订单服务

  1. 创建Spring Boot项目,选择相应的依赖项。

  2. 配置订单服务, 在application.yml中添加如下配置:

yaml 复制代码
server:
  port: 8084

spring:
  application:
    name: order-service
  eureka:
    client:
      service-url:
        defaultZone: http://localhost:8082/eureka/
  1. 创建一个订单控制器调用用户服务:
java 复制代码
@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;
    }
}
  1. 在订单服务的主类中配置RestTemplate
java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class OrderServiceApplication {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}
  1. 将Eureka Server,用户服务,订单服务启动。

6.4 服务测试

  1. 测试用户服务
java 复制代码
// 使用Postman或curl创建用户
POST http://localhost:8083/users?id=1&name=John

// 查询用户
GET http://localhost:8083/users/1
  1. 测试订单服务
java 复制代码
// 创建订单,查询用户信息:
POST http://localhost:8081/orders/1

// 结果
Order created for user: John
  1. 验证Eureka Dashboard

打开浏览器,访问http://localhost:8082,可以看到user-serviceorder-service的注册信息。

7 总结与展望

通过本文的示例,展示了如何使用Java和Spring Boot框架设计一个微服务架构,并实现服务的注册、发现和调用。

对于这种架构设计来说,不仅提升了系统的可维护性和可扩展性,还使得团队能够更快速地响应业务需求。

希望本文能为有志于微服务架构设计的开发者提供一些启示和帮助。

必须从过去的错误学习教训而非依赖过去的成功

相关推荐
diudiu962812 分钟前
Maven配置阿里云镜像
java·spring·阿里云·servlet·eclipse·tomcat·maven
牛客企业服务13 分钟前
AI面试选型策略:9大维度避坑指南
人工智能·面试·职场和发展
Yeats_Liao18 分钟前
MindSpore开发之路(四):核心数据结构Tensor
数据结构·人工智能·机器学习
魔芋红茶24 分钟前
Netty 简易指南
java·开发语言·netty
咨询qq 87622396525 分钟前
三菱PLC与MCGS组态3x4书架式堆垛式立体库
机器学习
许泽宇的技术分享42 分钟前
解密Anthropic的MCP Inspector:从协议调试到AI应用开发的全栈架构之旅
人工智能·架构·typescript·mcp·ai开发工具
大学生资源网43 分钟前
基于springboot的万亩助农网站的设计与实现源代码(源码+文档)
java·spring boot·后端·mysql·毕业设计·源码
小严家1 小时前
Java基础教程大全完整学习路径
java·开发语言·学习
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于Java的电影推荐系统为例,包含答辩的问题和答案
java·开发语言
nopSled1 小时前
AlphaAvatar:一个基于 LiveKit 的插件化实时 Omni-Avatar 架构
人工智能·语言模型