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

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中添加如下配置:
server:port:8082eureka:client:register-with-eureka:falsefetch-registry:false
  1. 在主类中添加@EnableEurekaServer注解:
@SpringBootApplication@EnableEurekaServerpublicclassEurekaServerApplication{publicstaticvoidmain(String[] args){SpringApplication.run(EurekaServerApplication.class, args);}}

6.2 创建用户服务

  1. 创建Spring Boot项目,选择相应的依赖项。
  2. 配置用户服务, 在application.yml中添加如下配置:
server:port:8083spring:application:name: user-service eureka:client:service-url:defaultZone: http://localhost:8082/eureka/ 
  1. 创建一个简单的用户控制器 :
@RestController@RequestMapping("/users")publicclassUserController{privateMap<Long,String> users =newHashMap<>();@PostMappingpublicvoidcreateUser(@RequestParamLong id,@RequestParamString name){ users.put(id, name);}@GetMapping("/{id}")publicStringgetUser(@PathVariableLong id){return users.getOrDefault(id,"User not found");}}

6.3 创建订单服务

  1. 创建Spring Boot项目,选择相应的依赖项。
  2. 配置订单服务, 在application.yml中添加如下配置:
server:port:8084spring:application:name: order-service eureka:client:service-url:defaultZone: http://localhost:8082/eureka/ 
  1. 创建一个订单控制器调用用户服务:
@RestController@RequestMapping("/orders")publicclassOrderController{@AutowiredprivateRestTemplate restTemplate;@PostMapping("/{userId}")publicStringcreateOrder(@PathVariableLong userId){String user = restTemplate.getForObject("http://user-service/users/"+ userId,String.class);return"Order created for user: "+ user;}}
  1. 在订单服务的主类中配置RestTemplate
@SpringBootApplication@EnableDiscoveryClientpublicclassOrderServiceApplication{@BeanpublicRestTemplaterestTemplate(){returnnewRestTemplate();}publicstaticvoidmain(String[] args){SpringApplication.run(OrderServiceApplication.class, args);}}
  1. 将Eureka Server,用户服务,订单服务启动。

6.4 服务测试

  1. 测试用户服务
// 使用Postman或curl创建用户POST http://localhost:8083/users?id=1&name=John// 查询用户GET http://localhost:8083/users/1
  1. 测试订单服务
// 创建订单,查询用户信息:POST http://localhost:8081/orders/1// 结果Order created for user:John
  1. 验证Eureka Dashboard

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

7 总结与展望

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

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

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

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

Read more

Flutter for OpenHarmony:cli_util 告别手写 print,用专业级日志系统构建你的 Dart 命令行工具 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:cli_util 告别手写 print,用专业级日志系统构建你的 Dart 命令行工具 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 随着 Flutter 和 Dart 生态的爆发,越来越多的开发者开始使用 Dart 编写命令行工具(CLI)。从官方的 flutter 工具链,到社区的 melos、very_good_cli,Dart 因其 AOT 编译出的独立二进制文件(无需安装运行时)和极快的启动速度,已成为编写跨平台 CLI 的首选语言。 但在开发 CLI 时,我们经常面临一些底层痛点: * SDK 哪里找? 如何准确找到当前运行环境的 Dart SDK 路径?(用于调用 dart format 或 dart pub)。 * 日志怎么打? 简单的

By Ne0inhk
鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固

《鸿蒙APP开发从入门到精通》第20篇:鸿蒙金融理财全栈项目——运维监控、性能优化、安全加固 📊🔧🛡️ 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第20篇——运维监控、性能优化、安全加固篇,100%承接第19篇的生态合作、用户运营、数据变现架构,并基于金融场景的运维监控、性能优化、安全加固要求,设计并实现鸿蒙金融理财全栈项目的运维监控、性能优化、安全加固功能。 学习目标: * 掌握鸿蒙金融理财项目的运维监控设计与实现; * 实现应用监控、服务器监控、数据库监控; * 理解性能优化在金融场景的核心设计与实现; * 实现前端优化、后端优化、数据库优化; * 掌握安全加固在金融场景的设计与实现; * 实现代码加固、数据加密、安全审计; * 优化金融理财项目的用户体验(运维监控、性能优化、安全加固)。 学习重点: * 鸿蒙金融理财项目的运维监控设计原则; * 性能优化在金融场景的应用; * 安全加固在金融场景的设计要点。 一、 运维监控基础 🎯 1.1 运维监控定义 运维监控是指对金融理财项目的应用、

By Ne0inhk
【Linux篇】Socket编程UDP

【Linux篇】Socket编程UDP

📌 个人主页:孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 文章目录 * Socket编程UDP * 创建一个套接字 * 为套接字绑定一个端口号 * UDP套接字的初始化部分 * 收消息 * 发消息 * UDP通信流程拆分 * 简单演示: Socket编程UDP UDP是一种无连接、面向数据报、不可靠的传输层协议。具有不建立连接,不保证到达,不保证顺序,不重传,不拥塞控制,速度快,开销小 的特点。 我们想要网络通信,想要UDP的编写,我们想要以网络收发的话首先得把网络文件打开. 创建一个套接字 #include<sys/types.h>/* See NOTES */#include<sys/socket.h>intsocket(int domain,int

By Ne0inhk
OpenClaw 远程访问配置指南:SSH 隧道与免密登录

OpenClaw 远程访问配置指南:SSH 隧道与免密登录

OpenClaw 远程访问配置指南:SSH 隧道与免密登录 本文介绍如何从 Windows 访问部署在虚拟机/远程服务器上的 OpenClaw Gateway,包括 SSH 隧道配置和免密登录设置。 目录 1. 场景说明 2. SSH 隧道访问 3. 配置免密登录 4. 创建快捷启动脚本 5. 常见问题 一、场景说明 网络架构 ┌─────────────────────┐ ┌─────────────────────┐ │ Windows 主机 │ │ 虚拟机/服务器 │ │ │ SSH 隧道 │ │ │ 浏览器 ◄───────────┼───────────────────►│ OpenClaw Gateway │ │ localhost:18790 │ 端口转发 │ 127.0.0.1:18789 │ └─────────────────────┘ └─────────────────────┘ 为什么需要 SSH 隧道? OpenClaw Gateway

By Ne0inhk