一、微服务场景模拟

首先,我们需要模拟一个服务调用的场景。方便后面学习微服务架构

一、创建父工程

1.1 创建 maven 工程
一、微服务场景模拟_第1张图片
1.2 jar引入


    4.0.0

    cn.itcast.demo
    cloud-demo
    1.0-SNAPSHOT
    pom

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.4.RELEASE
    

    
        UTF-8
        UTF-8
        1.8
        Finchley.SR1
        2.0.3
        5.1.32
    

    
    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            

            
            
                tk.mybatis
                mapper-spring-boot-starter
                ${mapper.starter.version}
            

            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
        
    

    
    
        
            org.projectlombok
            lombok
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

二 、服务提供者

2.1 Spring脚手架创建工程
  • 创建Module


    一、微服务场景模拟_第2张图片
  • 添加依赖


    
        cloud-demo
        cn.itcast.demo
        1.0-SNAPSHOT
    
    4.0.0

    user-service

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            mysql
            mysql-connector-java
        
        
            tk.mybatis
            mapper-spring-boot-starter
        
    


  • 项目结构


    一、微服务场景模拟_第3张图片
2.2 编写代码
  • yml


    一、微服务场景模拟_第4张图片
  • application


    一、微服务场景模拟_第5张图片
    image.png
  • pojo


    一、微服务场景模拟_第6张图片
    image.png
  • mapper


  • service


    一、微服务场景模拟_第7张图片
一、微服务场景模拟_第8张图片
  • controller


    一、微服务场景模拟_第9张图片
2.3 启动并测试
一、微服务场景模拟_第10张图片

三、 服务调用者

与上面类似,这里不再赘述,需要注意的是,我们调用user-service的功能,因此不需要mybatis相关依赖了。

3.1 创建工程
  • 添加依赖


    
        cloud-demo
        cn.itcast.demo
        1.0-SNAPSHOT
    
    4.0.0

    consumer-demo

    
        
            org.springframework.boot
            spring-boot-starter-web
        
    


3.2 编写代码
  • 项目结构


    一、微服务场景模拟_第11张图片
  • yml


  • application


    一、微服务场景模拟_第12张图片
  • pojo


    一、微服务场景模拟_第13张图片
  • controller


    一、微服务场景模拟_第14张图片
  • 调出Run Dashboard


    一、微服务场景模拟_第15张图片
3.3 启动测试
一、微服务场景模拟_第16张图片
一、微服务场景模拟_第17张图片

四、 有没有问题?

简单回顾一下,刚才我们写了什么:

  • use-service-demo:一个提供根据id查询用户的微服务
  • consumer-demo:一个服务调用者,通过RestTemplate远程调用user-service-demo

流程如下:

存在什么问题?

  • 在consumer中,我们把url地址硬编码到了代码中,不方便后期维护
  • consumer需要记忆user-service的地址,如果出现变更,可能得不到通知,地址将失效
  • consumer不清楚user-service的状态,服务宕机也不知道
  • user-service只有1台服务,不具备高可用性
  • 即便user-service形成集群,consumer还需自己实现负载均衡

其实上面说的问题,概括一下就是分布式服务必然要面临的问题:

  • 服务管理
    • 如何自动注册和发现
    • 如何实现状态监管
    • 如何实现动态路由
  • 服务如何实现负载均衡
  • 服务如何解决容灾问题
  • 服务如何实现统一配置

以上的问题,我们都将在SpringCloud中得到答案。

你可能感兴趣的:(一、微服务场景模拟)