微服务实战03-注册数据服务

简介: EurekaServer ,它扮演的角色是注册中心,用于注册各种微服务,以便于其他微服务找到和访问。有了EurekaServer,还需要一些微服务,注册到EurekaServer上去。这一节,我们来写一个注册微服务。为了简单起见,我们不用数据库,用java来模拟即可。

1.订单模块

创建一个订单模块

37.png


模块名是oms,是Order Manage Service的缩写,为什么简写呢,因为我要装杯。

38.png



pom.xml 添加依赖:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>     
    </dependencies>

spring-cloud-starter-netflix-eureka-client 表示这是个 eureka 客户端。


spring-boot-starter-web 表示这是个web服务,会提供控制层,因为我们要提供访问接口,所以要加web。


Order实体类


这是订单的实体类,为了方便起见,我们要加上lombok。


在parent工程的pom里面加上lombok


39.png

依赖配置

<!-- lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <scope>compile</scope>
</dependency>

dto文件在这

40.png


代码:

@Data
public class Order {
   private Integer orderId;   //订单号
   private String productName;  //货品名称
   private Integer quantity;  //数量
}

eclipse还需要安装lombok插件才行,光有jar包还不够,如果搞不定就老老实实生成get/set方法吧,这个没关系。

Order服务类

41.png


public interface OrderService {
   public List<Order> queryOrders();
}

再来个实现类

42.png

@Service
public class OrderServiceImpl implements OrderService {
 @Override
 public List<Order> queryOrders() {
  List<Order> list = new ArrayList<>();
  Order o1 = new Order();
  o1.setOrderId(1);
  o1.setProductName("GBA");
  o1.setQuantity(10);
  Order o2 = new Order();
  o2.setOrderId(2);
  o2.setProductName("NDS");
  o2.setQuantity(10);
  list.add(o1);
  list.add(o2);
  return list;
 }
}

Order控制层

@RestController
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Value("${server.port}")
   String port;
    @GetMapping("/order/list")
    public List<Order> queryOrders(){
      System.out.println("------------" + port);
      return orderService.queryOrders();
    }
}

引入端口,方便观察后面集群访问。

启动类

43.png

代码:

@SpringBootApplication
@EnableEurekaClient
public class Application {
 public static void main(String[] args) {
  SpringApplication.run(Application.class, args);
 }
}

application.yml配置

spring:
  application:
    name: order-data-service
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8081/eureka/

order-data-service代表这是一个订单数据服务,给其他系统提供订单数据用的。 defaultZone用来设置注册中心的地址,跟eureka-server中的defaultZone是一样的。

现在我们启动两个数据服务。

44.png

选择oms,启动类也要选对

45.png


手动填写启动端口

46.png


注意,server.port左边有个--,一定要加。

启动完毕后,再去看eureka服务:

47.png


就显示这个服务了。

再用同样的办法,在8083端口起一个订单服务。

48.png



得到这样的变化。


访问者两个地址:http://localhost:8082/order/list和http://localhost:8083/order/list,观察后台的日志可以看到都能正常访问的。但是这种方式是通过 http 协议 访问微服务本身,和注册中心没有关系,也观察不到集群的效果,接下来我们就会讲如何用微服务,访问另一个微服务。


相关文章
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1338 3
|
7月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
11月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
558 102
|
7月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1245 2
Spring Boot 3.x 微服务架构实战指南
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章评论的基本增删改查
本节介绍了文章评论的基本增删改查功能实现。首先,在`cn.itcast.article.dao`包下创建数据访问接口`CommentRepository`,继承`MongoRepository`以支持MongoDB操作。接着,在`cn.itcast.article.service`包下创建业务逻辑类`CommentService`,通过注入`CommentRepository`实现保存、更新、删除及查询评论的功能。最后,新建Junit测试类`CommentServiceTest`,对保存和查询功能进行测试,并展示测试结果截图,验证功能的正确性。
296 2
|
NoSQL Java MongoDB
微服务——MongoDB实战演练——文章评论实体类的编写
本节主要介绍文章评论实体类的编写,创建了包`cn.itcast.article.po`用于存放实体类。具体实现中,`Comment`类通过`@Document`注解映射到MongoDB的`comment`集合,包含主键、内容、发布时间、用户ID、昵称等属性,并通过`@Indexed`和`@CompoundIndex`注解添加单字段及复合索引,以提升查询效率。同时提供了Mongo命令示例,便于理解和操作。
233 2
|
9月前
|
负载均衡 监控 Java
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
在微服务架构中,高可用与稳定性至关重要。本文详解熔断、限流与负载均衡三大关键技术,结合API网关与Hystrix-Go实战,帮助构建健壮、弹性的微服务系统。
872 1
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——MongoTemplate实现评论点赞
本节介绍如何使用MongoTemplate实现评论点赞功能。传统方法通过查询整个文档并更新所有字段,效率较低。为优化性能,采用MongoTemplate对特定字段直接操作。代码中展示了如何利用`Query`和`Update`对象构建更新逻辑,通过`update.inc(&quot;likenum&quot;)`实现点赞数递增。测试用例验证了功能的正确性,确保点赞数成功加1。
277 0
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
229 0
|
11月前
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
916 9