本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

使用SpringBoot构建您的第一个微服务系统:初学者指南

网络教程 app 1℃

使用SpringBoot构建您的第一个微服务系统初学者指南

介绍

在本指南中,我们将逐步介绍如何使用 spring boot 创建一个简单而全面的微服务系统。我们将介绍微服务的基础知识,设置所需的环境,并实现两个微服务:orderservice 和 inventoryservice。此外,我们将使用 eureka 和 api 网关集成服务发现来管理服务之间的路由。

什么是微服务?

微服务是一种软件架构风格,其中应用程序被构建为协同工作的小型独立服务的集合。每个服务都是独立的,并通过明确定义的 api 与其他服务进行通信,使系统更加灵活、可扩展且更易于管理。

系统架构

我们系统的架构将由两个微服务组成:orderservice 和 inventoryservice。 orderservice 将使用关系数据库 (mysql) 来存储订单详细信息,而 inventoryservice 将使用 nosql 数据库 (mongodb) 来管理库存数据。我们还将使用 eureka 实现服务发现,并使用 api 网关来路由请求。

项目设置

在开始之前,请确保您已安装以下工具:

ide:intellij idea(首选)或 eclipsejdk:版本 17 或更高版本构建工具:maven数据库:mysql 和 mongodb微服务一:订单服务第 1 步:初始化项目

    转到 spring initializr。填写项目详情:项目:maven 项目语言:javaspring boot:2.5.7(或兼容版本)群组:.ordersystem神器:订单服务名称:订单服务包名: .ordersystem.orderservice包装:罐装java:17添加以下依赖:春天网spring 数据 jpamysql 驱动程序龙目岛点击生成下载项目。解压下载的 zip 文件并在 ide 中打开它。

第 2 步:配置应用程序

打开 src/main/resources 中的 application.properties 文件,添加以下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/orderservicespring.datasource.username=rootspring.datasource.password=yourpasswordspring.datasource.driver-class-name=.mysql.cj.jdbc.driverspring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=truespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.mysql8dialectserver.port=8081

第 3 步:实施模型

在src/main/java//ordersystem/orderservice/model/order.java中创建order实体类:

package .ordersystem.orderservice.model;import lombok.allargsconstructor;import lombok.data;import lombok.noargsconstructor;import javax.persistence.*;@data@allargsconstructor@noargsconstructor@entity@table(name = "orders")public class order { @id @generatedvalue(strategy = generationtype.identity) private long id; private string product; private int quantity; private double price;}

第 4 步:创建存储库

在 src/main/java//ordersystem/orderservice/repository/orderrepository.java 中创建 orderrepository 接口:

package .ordersystem.orderservice.repository;import .ordersystem.orderservice.model.order;import org.springframework.data.jpa.repository.jparepository;public interface orderrepository extends jparepository<order, long> {}

第 5 步:实施服务

在 src/main/java//ordersystem/orderservice/service/orderservice.java 中创建 orderservice 类:

package .ordersystem.orderservice.service;import .ordersystem.orderservice.model.order;import .ordersystem.orderservice.repository.orderrepository;import org.springframework.beans.factory.annotation.autowired;import org.springframework.stereotype.service;import java.util.list;@servicepublic class orderservice { @autowired private orderrepository orderrepository; public list<order> getallorders() { return orderrepository.findall(); } public order getorderbyid(long id) { return orderrepository.findbyid(id).orelse(null); } public order createorder(order order) { return orderrepository.save(order); } public void deleteorder(long id) { orderrepository.deletebyid(id); }}

第 6 步:创建控制器

在 src/main/java//ordersystem/orderservice/controller/ordercontroller.java 中创建 ordercontroller 类:

package .ordersystem.orderservice.controller;import .ordersystem.orderservice.model.order;import .ordersystem.orderservice.service.orderservice;import org.springframework.beans.factory.annotation.autowired;import org.springframework.web.bind.annotation.*;import java.util.list;@restcontroller@requestmapping("/api/orders")public class ordercontroller { @autowired private orderservice orderservice; @getmapping public list<order> getallorders() { return orderservice.getallorders(); } @getmapping("/{id}") public order getorderbyid(@pathvariable long id) { return orderservice.getorderbyid(id); } @postmapping public order createorder(@requestbody order order) { return orderservice.createorder(order); } @deletemapping("/{id}") public void deleteorder(@pathvariable long id) { orderservice.deleteorder(id); }}

微服务2:库存服务第 1 步:初始化项目

    转到 spring initializr。填写项目详情:项目:maven 项目语言:javaspring boot:2.5.7(或兼容版本)群组:.ordersystemartifact:库存服务名称:库存服务包名: .ordersystem.inventoryservice包装:罐装java:17添加以下依赖:春天网spring data mongodb龙目岛点击生成下载项目。解压下载的 zip 文件并在 ide 中打开它。

第 2 步:配置应用程序

打开 src/main/resources 中的 application.properties 文件,添加以下配置:

spring.data.mongodb.uri=mongodb://localhost:27017/inventoryserviceserver.port=8082

第 3 步:实施模型

在src/main/java//ordersystem/inventoryservice/model/inventoryitem.java中创建inventoryitem实体类:

package .ordersystem.inventoryservice.model;import lombok.allargsconstructor;import lombok.data;import lombok.noargsconstructor;import org.springframework.data.annotation.id;import org.springframework.data.mongodb.core.mapping.document;@data@allargsconstructor@noargsconstructor@document(collection = "inventory")public class inventoryitem { @id private string id; private string product; private int quantity;}

第 4 步:创建存储库

在 src/main/java//ordersystem/inventoryservice/repository/inventoryrepository.java 中创建 inventoryrepository 接口:

package .ordersystem.inventoryservice.repository;import .ordersystem.inventoryservice.model.inventoryitem;import org.springframework.data.mongodb.repository.mongorepository;public interface inventoryrepository extends mongorepository<inventoryitem, string> {}

第 5 步:实施服务

在 src/main/java//ordersystem/inventoryservice/service/inventoryservice.java 中创建 inventoryservice 类:

package .ordersystem.inventoryservice.service;import .ordersystem.inventoryservice.model.inventoryitem;import .ordersystem.inventoryservice.repository.inventoryrepository;import org.springframework.beans.factory.annotation.autowired;import org.springframework.stereotype.service;import java.util.list;@servicepublic class inventoryservice { @autowired private inventoryrepository inventoryrepository; public list<inventoryitem> getallitems() { return inventoryrepository.findall(); } public inventoryitem getitembyid(string id) { return inventoryrepository.findbyid(id).orelse(null); } public inventoryitem createitem(inventoryitem item) { return inventoryrepository.save(item); } public void deleteitem(string id) { inventoryrepository.deletebyid(id); }}

第 6 步:创建控制器

在 src/main/java//ordersystem/inventoryservice/controller/inventorycontroller.java 中创建 inventorycontroller 类:

package .ordersystem.inventoryservice.controller;import .ordersystem.inventoryservice.model.inventoryitem;import .ordersystem.inventoryservice.service.inventoryservice;import org.springframework.beans.factory.annotation.autowired;import org.springframework.web.bind.annotation.*;import java.util.list;@restcontroller@requestmapping("/api/inventory")public class inventorycontroller { @autowired private inventoryservice inventoryservice; @getmapping public list<inventoryitem> getallitems() { return inventoryservice.getallitems(); } @getmapping("/{id}") public inventoryitem getitembyid(@pathvariable string id) { return inventoryservice.getitembyid(id); } @postmapping public inventoryitem createitem(@requestbody inventoryitem item) { return inventoryservice.createitem(item); } @deletemapping("/{id}") public void deleteitem(@pathvariable string id) { inventoryservice.deleteitem(id); }}

使用 eureka 进行服务发现第1步:初始化eureka服务器

    转到 spring initializr。填写项目详情:项目:maven 项目语言:javaspring boot:2.5.7(或兼容版本)群组:.ordersystem神器:尤里卡服务器名称:尤里卡服务器包名: .ordersystem.eurekaserver包装:罐装java:17添加eureka server依赖。点击生成下载项目。解压下载的 zip 文件并在 ide 中打开它。

第2步:配置eureka服务器

打开 src/main/resources 中的 application.properties 文件,添加以下配置:

server.port=8761eureka.client.register-with-eureka=falseeureka.client.fetch-registry=false

第三步:启用eureka服务器

在 src/main/java//ordersystem/eurekaserver/eurekaserverapplication.java 中的主应用程序类上添加 @enableeurekaserver 注释:

package .ordersystem.eurekaserver;import org.springframework.boot.springapplication;import org.springframework.boot.autoconfigure.springbootapplication;import org.springframework.cloud.netflix.eureka.server.enableeurekaserver;@springbootapplication@enableeurekaserverpublic class eurekaserverapplication { public static void main(string[] args) { springapplication.run(eurekaserverapplication.class, args); }}

将服务与 eureka 集成

为 orderservice 和 inventoryservice 添加 eureka 客户端依赖:

<dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid></dependency>

在application.properties文件中添加eureka客户端配置:

订购服务:

eureka.client.service-url.defaultzone=localhost:8761/eureka/spring.application.name=order-service

库存服务:

eureka.client.service-url.defaultzone=localhost:8761/eureka/spring.application.name=inventory-service

api网关步骤一:初始化api网关

    转到 spring initializr。填写项目详情:项目:maven 项目语言:javaspring boot:2.5.7(或兼容版本)群组:.ordersystem神器:api 网关名称:api网关包名: .ordersystem.apigateway包装:罐装java:17添加 gateway 和 eureka discovery client 依赖项。点击生成下载项目。解压下载的 zip 文件并在 ide 中打开它。

步骤2:配置api网关

打开 src/main/resources 中的 application.yml 文件,添加以下配置:

server: port: 8080spring: application: name: api-gateway cloud: gateway:routes: – id: order-service uri: lb://order-service predicates:- path=/api/orders/** – id: inventory-service uri: lb://inventory-service predicates:- path=/api/inventory/**eureka: client: service-url:defaultzone: localhost:8761/eureka/

步骤 3:启用发现客户端

在 src/main/java//ordersystem/apigateway/apigatewayapplication.java 中的主应用程序类上使用 @enablediscoveryclient 进行注释:

package .ordersystem.apigateway;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class ApiGatewayApplication { public static void main(String[] args) { SpringApplication.run(ApiGatewayApplication.class, args); }}

测试微服务

    启动 eureka server:运行 eureka server 应用程序。启动订单服务:运行订单服务应用程序。启动库存服务:运行库存服务应用程序。启动 api gateway:运行 api gateway 应用程序。

使用 postman 或任何其他 api 客户端通过 api 网关测试端点:

创建订单:post localhost:8080/api/orders获取订单:get localhost:8080/api/orders创建库存商品:post localhost:8080/api/inventory获取库存物品:get localhost:8080/api/inventory结论

在本指南中,我们使用 spring boot 构建了一个简单的微服务系统。我们创建了两个微服务(orderservice 和 inventoryservice),将服务发现与 eureka 集成,并设置 api 网关用于路由请求。这种架构允许可扩展且可维护的微服务,可以在未来轻松扩展。

以上就是使用 Spring Boot 构建您的第一个微服务系统:初学者指南的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » 使用SpringBoot构建您的第一个微服务系统:初学者指南

喜欢 (0)