美文网首页
服务治理 Spring Cloud Eureka的入门(一)

服务治理 Spring Cloud Eureka的入门(一)

作者: DQ大神奇 | 来源:发表于2018-11-16 08:10 被阅读0次

    使用Http进行远程调用

    一开始用一个简单的http远程调用程序开始说起。在微服务体系中,不同的服务部署在不同的服务器上,服务器与服务器之间需要通过接口相互调用。其调用方式可以称之为远程调用。 常见的远程调用一般有两种方式,一个是RPC,早起的webservice和现在热门的dubbo都是典型的rpc调用。另一种调用方式就是基于http。现在热门的Rest风格就可以通过http协议来实现。
    下面就简单的实现一下http远程调用。
    首先,创建两个spring boot工程,一个作为服务的提供者,一个作为服务的消费者。


    image.png

    user-service-demo简单的整合了mybatis用于根据id查找用户

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        @GetMapping("/{id}")
        public User queryById(@PathVariable("id") Long id){
            User user = this.userService.queryById(id);
            System.out.print(user);
            return user;
        }
    
    }
    

    独立调用后的结果如下:


    image.png

    user-consume-demo通过http调用user-service-demo提供的服务
    首先,引入依赖okhttp

    <!-- 添加OkHttp支持 -->
    <dependency>
          <groupId>com.squareup.okhttp3</groupId>
          <artifactId>okhttp</artifactId>
          <version>3.9.0</version>
    </dependency>
    

    启动时候注入Bean

    @SpringBootApplication
    public class UserConsumerDemoApplication {
    
        @Bean
        public RestTemplate restTemplate() {
            // 使用了OkHttp客户端,只需要注入工厂即可
            return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
        }
    
        public static void main(String[] args) {
            SpringApplication.run(UserConsumerDemoApplication.class, args);
        }
    }
    

    同user-service-demo写好controller和service,但是dao层由于可以直接调用user-service-demo,所以不需要mybatis与数据库进行交互
    获取RestTemplate类,通过http的url调用获取User对象

    @Component
    public class UserDao {
        @Autowired
        private RestTemplate restTemplate;
    
        public User queryUserById(Long id){
            String url = "http://localhost:8081/user/" + id;
            return this.restTemplate.getForObject(url, User.class);
        }
    }
    

    结果如下:


    image.png

    总结

    服务与服务之间可以通过http进行调用,但是直接进行调用的话,需要手写要调用服务的url,一旦服务特别多,就会变得很麻烦。对此,Spring Cloud基于Netflix Eureka做了二次封装,用来负责完成微服务架构中的服务治理功能。

    相关文章

      网友评论

          本文标题:服务治理 Spring Cloud Eureka的入门(一)

          本文链接:https://www.haomeiwen.com/subject/gvisfqtx.html