微服务入门demo

比如要查询某用户的所有订单 => 在用户服务中访问订单服务。


订单服务

@Controller
@RequestMapping("/order")
public class OrderController {
    //根据user_id查询某用户的所有订单
    @GetMapping("/user/{user_id}")
    @ResponseBody
    public List<Order> queryOrdersByUserId(@PathVariable Integer user_id){
        //进过一系列操作,返回订单列表
        //.....
        return orderList;
    }

    //.....
}

方法返回值要返回给用户服务,需要@ResponseBody转换为json格式,不能String、List、Map什么的直接传过去。

服务本身可能要调用视图来显示,或者直接返回某种类型的数据,不返回json格式的数据,那就需要重新写一个方法来作为服务接口,返回json数据,供其他服务调用。


用户服务

@Controller
@RequestMapping("/user")
public class UserController {
    //springboot的服务之间使用REST相互访问、调用,springboot已经把REST封装为RestTemplate类,注入使用即可
    private RestTemplate restTemplate;

    @Autowired
    public void setRestTemplate(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @GetMapping("/{user_id}/order")
    @ResponseBody
    public List<Order> queryOrdersByUserId(@PathVariable Integer user_id){
        //订单服务的地址
        String url = "http://localhost:8080/order/user/{user_id}";
        //参数:服务地址、期待返回的数据类型(class对象)、要传入的参数
        List<Order> orderList = restTemplate.getForObject(url, List.class,user_id);
        return orderList;
    }

    //.....

}

restTemplate.getForObject(url, targetClass,Object...args);     //参数可变

参数指的是url中的参数,比如:

String url = "http://localhost:8080/springboot/user/{group}/{user_id}";

restTemplate.getForObject(url, targetClass,实参1,实参2)    //第n个实参对应url中的第n个{ }

我们看到IDEA提示:不能自动装配,因为找不打RestTemplate类型的实例。

我们需要手动创建一个RestTempalte的实例:

@SpringBootApplication
public class App{
    // 通过指定的方法,自动创建Bean(RestTempalte)的一个实例,放到spring容器中
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(App.class);
    }

}

在引导类中创建,可供此服务的所有类使用。



上面把服务的url写死在代码中,当然也可以写在application.yml中,使用@Value注入:

server:
  user:
    url: http://localhost:8080/springboot/order/user/{user_id}
    @Value("${server.user.url}")
    private String url;

虽然好修改url一些,但节点地址依然是死的、固定的,只会访问指定的节点,做负载均衡、或者服务节点增减时怎么办?

传统的方式是使用nginx做代理、负载均衡,由nginx决定分发到该服务的哪个节点。

微服务有自己的处理方式:SpringCloud使用Eureka来注册、发现服务,Dubbo使用Zookeeper来注册、发现服务。

原文地址:https://www.cnblogs.com/chy18883701161/p/12294628.html

时间: 2024-10-09 10:40:35

微服务入门demo的相关文章

使用Istio治理微服务入门

近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务.再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设计的首选.但微服务化易弄,服务治理难搞! 一.微服务的"痛点" 微服务化没有统一标准,多数是进行业务领域垂直切分,业务按一定的粒度划分职责,并形成清晰.职责单一的服务接口,这样每一块规划为一个微服务.微服务之间的通信方案相对成熟,开源领域选择较多的有RPC或RESTful API方案,比如

ZooKeeper分布式专题与Dubbo微服务入门

第1章 分布式系统概念与ZooKeeper简介对分布式系统以及ZooKeeper进行简介,使得大家对其有大致的了解1-1 zookeeper简介1-2 什么是分布式系统1-3 分布式系统的瓶颈以及zk的相关特性 第2章 ZooKeeper安装如何安装ZooKeeper以及对ZooKeeper最基本的数据模型进行剖析2-1 JDK的安装2-2 zookeeper下载.安装以及配置环境变量2-3 zookeeper文件夹主要目录介绍2-4 zookeeper配置文件介绍,运行zk 第3章 ZooKe

Health Check in eShop -- 解析微软微服务架构Demo(五)

引言 What is the Health Check Health Check(健康状态检查)不仅是对自己应用程序内部检测各个项目之间的健康状态(各项目的运行情况.项目之间的连接情况等),还包括了应用程序对外部或者第三方依赖库的状态检测. Why use Health Check 现在我们的项目越来越多的从单体多层架构转换成多项目多层架构即现在流行的微服务架构. 原来我们的App把各个模块分层分项目处理,比如Users项目仅仅处理User的一些业务需求,但在整个项目使用的时候,我们仅仅需要引用

架构设计之「 微服务入门 」

微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务.一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来的危害,比如很多中小团队对微服务的基础知识只是做了很浅显的了解就开始盲目的推动微服务的实施,最后导致了项目的失败. 微服务要想做好是一个非常复杂的架构,今天就先只聊一聊微服务的一些基础架构,算是入门篇. 一.什么是「 微服务 」? 「 微服务 」由 Martin Fowler 提出,它是指一种软件架构风格.一个大型的系统可以由多个

springboot+springcloud微服务入门

MicroService实现技术: 用springBoot来创建单个服务,用SpringCloud来管理这些微服务. ##SpringCloud的五大神兽 #1.注册/服务发现——Netflix Eureka 管理服务器地址和ip的 #2.客服端负载均衡——Netflix Ribbon\Feign 服务请求的分配 #3.断路器——Netflix Hystrix 对有故障的服务进行处理 #4.服务网关——Netflix Zuul 微服务的统一入口. #5.分布式配置——Spring Cloud C

springCloud微服务入门

目录 前言 Eureka 注册中心server 新建 配置 服务提供者service 新建 配置 服务消费者controller 新建 配置 使用 Feign负载均衡 前言 springCloud是一个微服务框架集. eureka来实现zookeeper: Eureka 注册中心server 新建 选择版本: 1.5.17 cloud dicovery --- eureka server 配置 启动类 # 启动类添加注解: @EnableEurekaServer 简单配置 # applicati

写给新手的Spring Cloud的微服务入门教程

1. 微服务简介 1.1 什么是微服务架构 微服务架构是系统架构上的一种设计风格 将大系统拆分成N个小型服务 这些小型服务都在各自的线程中运行 小服务间通过HTTP协议进行通信 有自己的数据存储.业务开发.自动化测试和独立部署机制 可以由不同语言编写 小结:微服务架构的思想,不只是停留在开发阶段,它贯穿了设计,研发,测试,发布,运维等各个软件生命周期. 2. 架构体系 架构样例: 2.1 微服务发布--持续集成 3. 微服务架构九大特性 服务组件化-- 组件是可独立更换.升级的单元.就像PC中的

Spring Cloud实战微服务入门

1.spring cloud是什么? 是一个快速构建分布式系统的工具集,构建于Spring Boot之上 2.spring cloud 的特点 约定优于配置 开箱即用.快速启动 适用于各种环境 轻量级的组件:Eureka 组件的支持很丰富:配置中心.注册中心.智能路由... 选型中立 功能齐全 3.关于Spring Cloud的版本 4.需要的技术储备 java.maven.Spring Boot 5.使用的软件版本 Maven 3.3.9 STS 3.7.2(类似于eclipse) Sprin

从 0 开始的微服务架构:(五)代码给你,看如何用Docker支撑微服务

很好的一篇文章,全面.系统. 虽然已经红了很久,但是"微服务架构"正变得越来越重要,也将继续火下去.各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲述何为微服务架构.就是没有一个做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务架构的系列.所以,我们邀请青柳云的苏槐与 InfoQ 一起共建微服务架构专题