微服务技术栈
![](https://i-blog.csdnimg.cn/direct/0b7edb5b6a514d028e938b1a16541a64.png)
![](https://i-blog.csdnimg.cn/direct/8912d168ebc243eb930f2d5b0552f937.png)
![](https://i-blog.csdnimg.cn/direct/c09e40d662ae42978f78aa71f5f1e100.png)
![](https://i-blog.csdnimg.cn/direct/4df8b3fd1c7c4a13ad35e106218cb26e.png)
![](https://i-blog.csdnimg.cn/direct/3632f0444a4c45ff982cae26420b89a9.png)
总结
![](https://i-blog.csdnimg.cn/direct/e5521ed53b1345beaf3c4b4f36369374.png)
微服务技术对比
![](https://i-blog.csdnimg.cn/direct/2121acc0cc5a47ffba82a106026f63d3.png)
技术栈
![](https://i-blog.csdnimg.cn/direct/ff507589eeab469082f0a6c670980e30.png)
SpringCloud
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
![](https://i-blog.csdnimg.cn/direct/8b371b8484ea42b8b91428a15dfd14ca.png)
Springboot和SpringCould兼容性
![](https://i-blog.csdnimg.cn/direct/1de129903c8745778df58a0633044b61.png)
![](https://i-blog.csdnimg.cn/direct/ea54f741c29d44bc8614b02db8519ba4.png)
代码目录结构如下
![](https://i-blog.csdnimg.cn/direct/e373fc8d0601416d8fa20dd86d40613a.png)
用于远程调用Bean
![](https://i-blog.csdnimg.cn/direct/25fe161ba36a42ebbbcf35d38b366f24.png)
代码
java
package cn.itcast.order.config;
//import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
// @LoadBalanced // 添加负载均衡注解
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
方法执行过程过程
OrderController
![](https://i-blog.csdnimg.cn/direct/d4c2c85309d444ebbdfc60b30a84f7b1.png)
OrderService
OrderMapper
UserMapper
Order![](https://i-blog.csdnimg.cn/direct/f77a6e7d5cbf4f4e8949e6b0c3fc51c1.png)
User![](https://i-blog.csdnimg.cn/direct/d2e4d3fa10264fb88353bd4b4a2ea1fd.png)
远程调用成功截图
访问
![](https://i-blog.csdnimg.cn/direct/e6aacfcc662b42aeb05b6fea44f5875d.png)
总结
微服务调用方式基于RestTemplate发起的http请求实现远程调用http请求做远程调用是与语言无关的调用,只要知道对方编辑端口、接口路径、请求参数即可。
Eureka消费者与提供者
服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
提供者和消费者是相对的,一个服务可能既是提供者又是消费者。
![](https://i-blog.csdnimg.cn/direct/58cf8fe89c854a83ab9c6b2c2feb55a7.png)
![](https://i-blog.csdnimg.cn/direct/4fafe4ec1f6b44179543d247bcde662a.png)
![](https://i-blog.csdnimg.cn/direct/799ff31afee04220ac71cdab9eec0e60.png)
![](https://i-blog.csdnimg.cn/direct/5329b34b1cdf4d7c9e26d4b43ba00a08.png)
![](https://i-blog.csdnimg.cn/direct/db087f5469fc4b1b9f90b45ac60281f3.png)
![](https://i-blog.csdnimg.cn/direct/1ff34b1ab00a4b74824f6ac4406f6112.png)
![](https://i-blog.csdnimg.cn/direct/991a932f18c0443e8cc8e5d1a9ed7812.png)
pom.xml引入依赖服务端依赖
![](https://i-blog.csdnimg.cn/direct/8e7604251008407d8436ac3d744ab9ce.png)
java
<dependencies>
<!--eureka服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
![](https://i-blog.csdnimg.cn/direct/1781596e5b234dceb4ef338b27ffe840.png)
注册userservice
![](https://i-blog.csdnimg.cn/direct/4e5d1717048c4491bd57e173f61d313e.png)
use pom.xml引入服务管理依赖
java
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
成功服务截图
![](https://i-blog.csdnimg.cn/direct/a74421aae70c462186ee8661d553874b.png)
复制多个实例
![](https://i-blog.csdnimg.cn/direct/093db9ab0e214028acf01875139aa685.png)
操作如下
![](https://i-blog.csdnimg.cn/direct/37b7a40da4024c1a9094dc81513220e7.png)
输入 -Dserver.port=8082
点击确定
![](https://i-blog.csdnimg.cn/direct/8fcc23149b9e418ea0ccdd1f7d440e25.png)
![](https://i-blog.csdnimg.cn/direct/ca6016fef7a948219ea6e2d0c7d69eeb.png)
成功注册两个实例
![](https://i-blog.csdnimg.cn/direct/1b2252ad0f6344529031074a9dccbd23.png)
Eureka服务注册总结
服务注册是微服务架构中的关键环节,保证各服务之间的发现和调用。
1引入依赖
在pom文件中eureka-client依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2配置文件
在application.yml文件,添加服务名称、eureka地址:
spring: application: name: userservice eureka: client: service-url: defaultZone: http://127.0.0.1:1086/eureka
服务注册是微服务架构中的关键环节,保证各服务之间的发现和调用。以下是服务注册的关键概念和步骤的总结:
Eureka服务发现总结
![](https://i-blog.csdnimg.cn/direct/862a5898b805444b89ddda68570e27f0.png)
Ribbon-负载均衡原理
SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改
![](https://i-blog.csdnimg.cn/direct/90252e27a5ce43a7847daef3ea054189.png)
![](https://i-blog.csdnimg.cn/direct/e42378f652164aecb6414cc3712c292d.png)
![](https://i-blog.csdnimg.cn/direct/ca1175ad97ae4948a9320554b2515c6a.png)
![](https://i-blog.csdnimg.cn/direct/5c8762f9bdd54325b275250567ed3a18.png)