spring-Cloud-netflix-快速入门(一)-环境搭建与组件介绍

基础业务环境搭建

业务介绍

以简单的部门管理为基础,对第一代微服务进行全面了解。

并且可以通过本教程可以快速上手微服务开发,此篇博客作为后面集成微服务其他组件的基础环境。

业务:

​ 增加部门

​ 查询部门

模块划分

------dept-api(通用实体)<br/>
------dept-producer(生产者)<br/>
------dept-consumer(消费者)<br/>

在这里插入图片描述

SQL

/*
 Navicat Premium Data Transfer

 Source Server         : mysql
 Source Server Type    : MySQL
 Source Server Version : 50611
 Source Host           : localhost:3306
 Source Schema         : sqltest

 Target Server Type    : MySQL
 Target Server Version : 50611
 File Encoding         : 65001

 Date: 15/07/2022 10:53:14
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for dept
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `deptno` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID',
  `dname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门名称',
  `db_source` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据源',
  PRIMARY KEY (`deptno`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES (1, '康世行部门', 'sqltest');

SET FOREIGN_KEY_CHECKS = 1;

源码下载地址:

https://github.com/kangshihang1998/springCloudNetFlixDemo

测试

启动两个基础服务

在这里插入图片描述

查询部门

localhost:9001/deptConsumer/queryDeptConsumer/1

在这里插入图片描述

添加部门

localhost:9001/deptConsumer/addDeptConsumer/测试部门
在这里插入图片描述

在这里插入图片描述

微服务组件介绍

Eureka(注册中心)

官方解释

云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

个人理解

以上面的部门管理为例:

消费者是通过rest接口的方式调用生产者,正常的情况下可以通过 restTemplate 访问指定的rest接口获取响应结果。

rest接口结构:http://ip:端口号:接口映射地址

从上面的rest接口结构来看,完全可能出现ip地址更换或者端口号更换的情况。这样只要更换了其中一个就需要在消费端进行统一个更改,否则消费者调用接口会出现接口找不到的情况!

Eureka

这个时候Eureka 的好处就可以体现了,为了解决上面的这种情况,Eureka 让生产者和消费者主动的把自己的 ip 地址,端口号和服务名字 发送给Eureka.

然后由Eureka 保存生产者和消费者的ip,端口,服务名 这些信息。

消费者

现在消费者还是使用restTemplate 调用生产者,不同的是ip:port 部分换成了 服务名称,调用格式示例如下:

                                                        服务名称             接口映射地址         参数     返回值类型
      FrontResult forObject = restTemplate.getForObject(REST_URL_PREFIX + "/dept/queryDept/" + deptno, FrontResult.class);

参考博客

如果想直接搭建Eureka 可以直接参考下面这篇博客

springCloud.微服务.零基础搭建注册中心(Eureka)(一)_康世行的博客-CSDN博客

组件中文参考地址

Spring Cloud中文网-官方文档中文版

ZUUl(网关)

官方解释

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

个人理解

还是以上面部门管理为例,目前有两个模块 生产者,消费者。这两个模块之间调用可以通过注册中心解除耦合,并且不用关心对方的具体地址。只需要根据服务名称去注册中心获取,也就是说即使这个服务对应了多个实例,也不会出问题(因为使用到了负载均衡,选一个给客户端使用后面文章会介绍)。一个服务多个实例的选择过程和网关有点类似,就是从多个实例中选择一个和网关很像。唯一区别是网关的是有条件的,根据条件进行模块的选择。

根据上面的这个例子,我们可以明白。网关最大的作用是服务的选择,根据不同的条件跳转到不同的服务。假设现在给部门管理功能添加一个管理页面,并且这个页面会调用 消费者模块提供的服务和生产者模块提供的服务。这个时候前端需要准备两个 baseUrl 来调用不同模块提供的服务,所以这个时候可以使用网关统一baseUrl地址,在路径上加上服务标识用于服务转发。

比如 :生产者路径上加上 production 标识 消费者路径加上 consumer 标识,如下示例

网关baseUrl : locahost:9527

生产者:

locahost:9527/production/具体接口映射

消费者:

locahost:9527/consumer /具体接口映射

组件中文参考地址

Spring Cloud中文网-官方文档中文版

Config(配置中心)

官方解释

配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。

个人理解

这个比较简单,就是把springboot 本地的yml 文件,移动到第三方平台让代码和配置分离(gitee/github)。方便进行配置的热更新,当然这个版本的配置中心要想实现热更新还的配合其他插件,具体的就不在者介绍了。单独的config只是实现了配置和代码分离,可以在不改变代码的情况下修改配置,只是需要重新启动jar包。

组件中文参考地址

Spring Cloud中文网-官方文档中文版

Hystrix(服务熔断降级)

官方解释

熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

个人理解

熔断器提供了两种功能,消费者端使用的 服务降级和生产者端使用的服务熔断。两者的目的都是避免服务雪崩,避免因为生产者服务不可用导致,消费者服务也不可用的情况。

组件中文参考地址

Spring Cloud中文网-官方文档中文版

DashBoard(单服务监控)

官方解释

Hystrix 仪表板不应部署在不受信任的网络上,也无需外部身份验证和授权。具体来说,hystrix-dashboard不提供任何默认的安全保护,可以根据用户提供的URL执行服务器端请求。

个人理解

针对服务熔断和降级的流量监控

组件中文参考地址

Spring Cloud中文网-官方文档中文版

Turbine (多服务监控)

官方解释

Turbine是聚合服务器发送事件流数据的一个工具,用来监控集群下hystrix的metrics情况。

个人理解

DashBoard 这个只能监控一个服务,Turbine 可以监控服务名称来监控多个服务的多个实例。功能和DashBoard 是一样的,监控服务熔断和降级的流量情况。

组件中文参考地址

Spring Cloud中文网-官方文档中文版

合服务器发送事件流数据的一个工具,用来监控集群下hystrix的metrics情况。

个人理解

DashBoard 这个只能监控一个服务,Turbine 可以监控服务名称来监控多个服务的多个实例。功能和DashBoard 是一样的,监控服务熔断和降级的流量情况。

组件中文参考地址

Spring Cloud中文网-官方文档中文版

posted @ 2022-07-31 17:24  康世行  阅读(258)  评论(0编辑  收藏  举报