2020Java微服务架构---学习笔记

1、学习一门新技术的步骤方法
    1、学习一门新技术时,只需要先把它用起来
    2、把使用过程中解决的问题及时记录、总结

目录

1、Linux

1、Linux的基本命令

2、Docker

 1、安装Docker

     6、自定义镜像

     7、docker-compose

1、springboot

1、src目录

2、常用注解

3、热加载

2、SpringCloud

1、SpringCloud介绍

1、微服务架构只是一个样式,或一个风格

2、SpringCloud是微服务架构落地的一套技术栈

2、服务的注册与发现-Eureka

3、服务间的负载均衡-Robbin

4、服务间的调用(通讯)-Feign

5、服务的隔离及断路器-Hystrix

6、服务网关-Zuul

7、服务间消息传递-Stream

8、服务的动态配置-Config

9、服务的追踪-Sleuth


1、学习一门新技术的步骤方法
    1、学习一门新技术时,只需要先把它用起来
    2、把使用过程中解决的问题及时记录、总结 

如果想虚拟机固定ip:就选择桥接模式,参考配置:https://blog.csdn.net/qq_40694145/article/details/82811961 

配置完然后重启network:systemctl restart network.service 

安装xshell拖拽上传命令:yum -y install lrzsz 

2、简单介绍 

     Nginx:解决用户请求平均分发
    Redis:解决数据共享并实现缓存功能
    ElasticSearch:解决搜索数据的功能

3、微服务架构也是分布式架构
微服务架构,在分布式架构的基础上再次拆分

Dubbo:阿里的,RPC通讯方式

SpringCloud:HTTP通讯方式
    Eureka注册中心:管理所有服务信息(协议://ip:端口/路径)
    Robbin:服务之间的负载均衡
    Hystrix:服务降级

MyCat:数据库的分库分表

4、mysql数据库一张表的数据达到500万条以上时,速度明显下降 

    1、分布式事务解决方法:RabbitMQ、LCN方式
    2、分布式是锁解决方法:Redis、Zookeeper
    3、分布式任务解决方法:Redis+Quartz或者Elastic-Job

1、Linux

    1、Linux和Windows的区别

1、Linux是严格区分大小写的,Windows无所谓
2、Linux中一切皆是文件
3、Linux中文件是没有后缀的
      有后缀的只是约定俗成的。eg:tar、tar.gz、conf
4、Windows下的软件一般无法直接运行在Linux中

1、Linux的目录结构
    Windows的目录结构石带有盘符的。eg:C:、D:
    而Linux中是没有盘符的
2、查看顶级目录:ls /

Linux的常用目录
    root:系统管理员的HOME目录
    bin:这个目录下放着经常使用的命令
    boot:存放的是启动Linux时的一些核心文件
    etc:存放系统管理所需要的配置文件、子目录
    home:普通用户的HOME目录
    usr:默认安装软件的目录,类似于Windows的Program Files目录
    opt:是主机额外安装软件拜访的目录

1、Linux的基本命令

    命令的基本格式:命令 [选项] [参数]
        有些命令不遵循这个格式,eg:
            我是谁:who am i
            我在哪:pwd
            查看ip地址:ip addr
            清屏:clear
            ping地址:ping 地址
            强制停止:Ctrl + C
    1、目录命令
    Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用..表示
        1、列出目录:ls [-ald] [目录名]

       2、切换目录:cd 具体路径 | 特殊符号

        3、创建目录:mkdir [-p] 目录名
        -p:代表创建多级目录时使用

        4、删除目录
            只删除空目录:rmdir 目录名
            删除非空目录:rm [-rf] 目录名
                -r:代表递归删除目录下的全部内容
                -f:不询问,直接删除
        5、复制目录:cp -r 来源目录 目标目录
                        -r:递归复制全部内容,复制时必须加这个选项
        6、移动、重命名目录
            mv 目录名 新目录名 | 路径
                如果第二个参数指定的路径不存在,就是重命名
                如果第二个参数的路径存在,就是移动
    2、文件命令
        1、创建文件:touch 文件1 文件2...
        2、编辑文件
            进入查看模式:vi 文件名
            进入编辑模式:i | a | o
            退出编辑模式:Esc
            从查看模式进入到底行命令模式::
            在底行命令模式,输入wq:表示保存并退出
                            输入q!:表示不保存并退出
            在查看模式:摁ZZ,可以快速保存并退出(注意:是大写的ZZ)

        3、查看文件
            从第一行开始查看文件内容,展示全部:cat 文件名
            从最后一行开始展示:tac 文件名
            显示文件时,展示行号:nl 文件名
            查看大文件时,可以一页一页的向下翻(只能向下翻):more 文件名
                摁space向下翻页,退出时摁q
            查看大文件时,可以任意的向上或者向下翻:less 文件名
                向上翻页:PageUp
                向下翻页:PageDown
                一行一行翻:↑↓
            只看前几行:head 文件名
           只看后几行:tail 文件名
           监控日志:tail -f 文件名 

       4、移动、重命名文件:mv 文件名 新文件名 | 路径 

 

       5、复制文件:cp 文件名 目录
       6、删除文件:rm [-f] 文件名
                -f:是否询问

    3、压缩包命令

       1、针对tar类型命令
            1、解压:tar [-zxvf] 压缩包名称 [-C 路径]
                -z:代表压缩包后缀是.gz的
                -x:代表解压
                -v:解压时,打印详细信息
                -f:代表指定文件名称【-f选项必须放在所有选项的最后】
                -C 路径:代表将压缩包内容解压到指定路径

 

            2、打包:tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2...
                -c:代表打包
       2、针对zip类型命令
            需要先安装软件:
                安装打包程序:yum -y install zip
                安装解压程序:yum -y install unzip
            1、解压:unzip 压缩包名称
            2、打包:zip 压缩包名称 文件1 文件2 目录1 目录2... 

    4、用户的操作
        1、用户的创建:useradd [-cgd] [选项指定的具体内容] 用户名
            -c:comment,给用户添加一段注释
            -g:group,指定用户所在组
            -d:代表指定用户的HOME目录


        2、设置用户密码:passwd 用户名
        3、切换用户:su 用户名

         3、删除用户:userdel [-r] 用户名
            -r:代表删除用户的同时,删除该用户的HOME目录
        4、修改用户:usermod [-cgd] [选项指定的具体内容] 用户名
        

     5、用户组的操作

        1、创建用户组:groupadd 用户组名
        2、修改用户组:groupmod [-n] [选项指定的具体内容] 用户组名
            -n:代表修改用户组名称
        3、删除用户组:groupdel 用户组名
            只能删除不存在用户的用户组

    6、文件权限的修改

查看文件详情:ls ll(或者:ls -l)

         1、对文件的权限修改:有2种方式
            1、数字方式:chmod [-R] 777 文件 | 目录
                rwx这3个权限的数字分别是:r:4,w:2,x:1
                -R:当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限
            2、符号方式:chmod [-R] a=rw 文件 | 目录
                a:all,u:user,g:group,o:other
                r:read,w:write,x:execute
                赋予权限的方式:
                    添加:+,减掉:-,设定:=
                -R:当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限

        2、文件拥有者及所属组修改
            1、修改文件的拥有者、所属组:chown [-R] 拥有者:所属组 文件 | 目录
            2、修改文件的拥有者:chown [-R] 拥有者 文件 | 目录
            3、修改文件的所属组:chgrp [-R] 所属组 文件 | 目录

 

    7、Linux的其他操作命令
        1、进程的操作
            1、查看全部进程:ps -ef
            2、查看全部正在运行的进程:ps -ef | grep 搜索的内容
                eg:ps -ef | grep tomcat
            3、杀死进程:kill -9 进程id
        2、服务的操作
            启动指定的服务:systemctl start 服务名称
            停止指定的服务:systemctl stop 服务名称
            重启指定的服务:systemctl restart 服务名称
            开机自启动指定的服务:systemctl enable 服务名称
            禁止开机自启动指定的服务:systemctl disable 服务名称
            查看服务状态:systemctl status 服务名称

        3、端口号查看
            先安装工具,才能使用:yum -y install net-tools
            查看端口号占用情况:netstat -naop | grep 端口号
        4、访问地址:curl 访问地址
        5、查找文件:find 路径 -type f | grep profile

课件资料文件名是:4.3 Linux教程_UNIX操作系统_千锋2020最新版 源码+课件+软件+资料 

1、Linux安装JDK:https://www.bilibili.com/video/BV1gC4y1p7z2?p=976

2、Linux安装Tomcat:https://www.bilibili.com/video/BV1gC4y1p7z2?p=978

3、Linux安装Mysql:https://www.bilibili.com/video/BV1gC4y1p7z2?p=977

2、Docker

网易的docker学习笔记:https://blog.csdn.net/pyl574069214/article/details/105593946

课件目录:4.4 2020最新版_Docker视频_应用容器引擎【千锋】源码+课件+软件+资料

 1、安装Docker

    1、下载Docker依赖的环境:yum -y install yum-utils device-mapper-persistent-data lvm2
    2、指定Docker镜像源:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    3、安装Docker
        安装缓存:yum makacache fast
        安装Docker服务:yum -y install docker-ce
    4、启动Docker
        启动Docker服务:systemctl start docker
        设置开机自启动:systemctl enable docker
        测试:docker run hello-world

2、Docker的中央仓库
    1、docker的官方中央仓库:https://hub/docker.com
        这个仓库是镜像最全的,在国外,下载速度较慢
    2、国内的镜像网站【下载速度快,但镜像相对不全】
        1、网易蜂巢:https://c.163yun.com/hub#/home
                这个是需要登录的
        2、daoCloud【推荐】:http://hub.daocloud.io/
                这个是不需要登录的,直接搜索就可以了
    3、国内的镜像网站

如果使用公司内部私服的方式拉取镜像,需要添加配置
    1、需要在/etc/docker/daemon.json中添加如下配置:
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "insecure-registries": ["公司私服的ip:port"]
}

    2、重启两个服务
        重新加载文件:systemctl daemon-reload
        重启docker:systemctl restart docker

 3、镜像的操作
        1、拉取镜像:docker pull 镜像名称[:tag]
            eg:docker pull dacloud.in/library/tomcat:8.5.15-jre8
        2、查看本地全部镜像:docker images
        3、删除本地镜像:docker rmi 镜像的id
        4、镜像的导入导出:

4、容器的操作
        1、运行容器
            docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的id | 镜像名称[:tag]
                -d:代表后台运行容器
                -p 宿主机端口:容器端口:将容器的端口映射到宿主机的端口,让其他机器可以通过ip+端口访问到容器
                                如果是这种情况:Windows中安装虚拟机Linux,在虚拟机中安装docker, 那宿主机就是Linux                                  
                --name 容器名称:指定容器名称

        2、查看正在运行的容器:docker ps [-qa]
            -a:查看全部的容器,包括没有运行的
            -q:只查看容器的id
        3、查看容器的日志:docker logs -f 容器id
            -f:可以滚动查看日志的最后几行
        4、进入容器内部:docker exec -it 容器id bash
        5、复制内容到容器:docker cp 文件名称 容器id:容器内部路径
            将宿主机的文件复制到容器内部的指定目录,eg:
            docker cp ssm.war fe:/usr/local/tomcat/webapps/


        6、重启、启动、停止、删除容器
            重启容器:docker restart 容器id
            启动已停止运行的容器:docker start 容器id
            停止容器:docker stop 容器id
            停止全部容器:docker stop ${docker ps -qa} 
            删除容器:docker rm 容器id
            删除全部容器:docker rm ${docker ps -qa} 

5、数据卷的使用

        1、创建数据卷:docker volume create 数据卷名称
            创建数据卷之后,默认会存放在一个目录下:/var/lib/docker/volumes/数据卷名称/_data


        2、查看数据卷详情
            docker volume inspect 数据卷名称
        3、查看全部数据卷:docker volume ls
        4、删除数据卷:docker volume rm 数据卷名称
        5、容器映射到数据卷:两种方式
            1、通过数据卷名称映射:docker run -v 数据卷名称:容器内部的路径 镜像id
            2、通过路径映射【推荐】:docker run -v 路径:容器内部的路径 镜像id

6、自定义镜像

1、创建Dockerfile文件
    创建自定义镜像就需要创建一个Dockerfile文件,
    eg:制作SSM容器镜像,文件内容如下:
from dacloud.in/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps

Dockerfile文件内的命令说明:
from:指定当前自定义镜像依赖的环境(依赖于中央仓库哪个镜像)
copy:将相对路径下的内容复制到自定义镜像中
workdir:声明镜像的默认工作目录
run:执行的命令,可以编写多个
cmd:需要执行的命令(在workdir下执行的,cmd可以写多个,但只会执行最后一个)

2、通过Dockerfile制作镜像
    docker build -t 镜像名称[:tag] .

7、docker-compose

1、为什么要使用docker-compose?
    1、之前运行一个镜像,需要添加大量的参数
        eg:docker run -d -p 8080:8080 --name ssm_tomcat -v /opt/volume_ssm_tomcat:/usr/local/tomcat/webapps dacloud.in/library/tomcat:8.5.15-jre8
     可以将这些参数放到docker-compose.yml文件中
    2、docker-compose可以批量管理容器【一个docker-compose.yml可以编写多个镜像配置】

2、安装docker-compose
    1、下载docker-compose

https://github.com/中搜索docker-compose,选择most starts,就可以看到第一个就是docker/compose,点击docker/compose进去后,选择发行版本releases,再点击tags,找到1.24.1版本


        下载1.24.1版本的docker-compose:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
    2、设置权限
        修改文件名称:mv docker-compose-Linux-x86_64 docker-compose
        设置文件执行权限:chmod 777 docker-compose


    3、配置环境变量
        将docker-compose文件移动到/usr/local/bin:mv docker-compose /usr/local/bin
        修改环境变量,在文件末尾添加:export PATH=$JAVA_HOME:/usr/local/bin:$PATH
            vi /etc/profile
        重新加载配置:source /etc/profile
        就可以在任意目录下运行:docker-compose

 3、docker-compose管理Mysql、Tomcat容器
    注意事项:
        1、yml文件以key:value方式来指定配置信息
        2、多个配置信息以换行、缩进的方式来区分
        3、在docker-compose.yml文件中,不要使用制表符

 4、使用docker-compose命令管理容器
    在使用docker-compose命令时,是在当前目录下找docker-compose.yml文件

1、启动管理的容器:docker-compose up -d
2、关闭并删除容器:docker-compose down
3、开启容器:docker-compose start
   关闭容器:docker-compose stop
   重启容器:docker-compose restart
4、查看docker-compose管理的容器:docker-compose ps
5、查看日志:docker-compose logs -f

 5、docker-compose配合Dockerfile使用

    1、编写docker-compose.yml文件
    
    2、编写Dockerfile文件
    
    3、运行

8、Docker CI、CD

1、CI介绍
    CI:continuous intergration持续集成
        将代码提交到git上,就自动的完成项目的重新构建、打包、运行、测试。[gitlabGitlab-Runner就可以实现这个功能]

2、搭建Gitlab服务器
    1、准备工作
        1、虚拟机至少知道4G运行内存
        2、安装Docker、docker-compose
    2、修改ssh的22端口
        将ssh的默认22端口,修改为60022端口,因为Gitlab需要占用22端口
        vi /etc/ssh/sshd_config
         找到:PORT 22,将22改为60022
         重启:systemctl restart sshd

    3、编写docker-compose.yml

文件详解讲解视频:https://study.163.com/course/courseLearn.htm?courseId=1209432891#/learn/video?lessonId=1279501136&courseId=1209432891
version: '3.1'
services:
 gitlab:
  image: 'twang2218/gitlab-ce-zh:11.1.4'
  container_name: "gitlab"
  restart: always
  privileged: true
  hostname: '192.168.3.20'
  environment:
   TZ: 'Asia/Shanghai'
   GITLAB_OMNIBUS_CONFIG: |
    external_url 'http://192.168.3.20'
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['gitlab_shell_ssh_port'] = 22
  ports:
   - '80:80'
   - '443:443'
   - '22:22'
  volumes:
   - /opt/docker_gitlab/config:/etc/gitlab
   - /opt/docker_gitlab/data:/var/opt/gitlab
   - /opt/docker_gitlab/logs:/var/log/gitlab 

    4、启动容器(第一次下需要很久,大概要下1个G)【我这里安装失败了,镜像拉取不下来】:docker-compose up -d
启动的速度也是很慢的,可以用查看logs:docker-compose logs -f 

https://www.bilibili.com/video/BV1gC4y1p7z2?p=996

3、搭建Gitlab-Runner

按照如下步骤操作

https://www.bilibili.com/video/BV1gC4y1p7z2?p=997

### 一. 准备环境

- 复制`daemon.json`到`/etc/docker/`,并执行`systemctl daemon-reload`,`systemctl restart docker`
- 创建工作目录 `/opt/docker_gitlab-runner` 
- 将提供好的`docker-compose.yml`文件以及`environment`目录全部复制到上述目录中
- 在宿主机启动docker程序后先执行 `sudo chown root:root /var/run/docker.sock` (如果重启过 docker,重新执行)
- 在`/opt/docker_gitlab-runner` 目录中执行`docker-compose up -d --build` 启动容器【要运行很久,如果网络不好是运行不起来的
- 【容器启动成功后,再执行这个】添加容器权限,保证容器可以使用宿主机的docker`docker exec -it gitlab-runner usermod -aG root gitlab-runner`
- 注册Runner信息到gitlab

```sh
docker exec -it gitlab-runner gitlab-runner register

# 输入 GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.199.109/

# 输入 GitLab Token
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh

# 输入 Runner 的说明
Please enter the gitlab-ci description for this runner:
可以为空

# 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci
Please enter the gitlab-ci tags for this runner (comma separated):
deploy

# 这里选择 true ,可以用于代码上传后直接执行(根据版本,也会没有次选项)
Whether to run untagged builds [true/false]:
true

# 这里选择 false,可以直接回车,默认为 false(根据版本,也会没有次选项)
Whether to lock Runner to current project [true/false]:
false

# 选择 runner 执行器,这里我们选择的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
```

4、测试

https://www.bilibili.com/video/BV1gC4y1p7z2?p=998

4、CD介绍 

CD包含两个部分:持续交付、持续部署
    持续交付:将代码交付给测试团队
    持续部署:将指定的版本代码部署到生产环境【Jenkins可以实现这个功能】

5、安装Jenkins【老师的Jenkins与gitlab是两个ip,也就是两个虚拟机】

https://www.bilibili.com/video/BV15e411W75G?p=1

Jenkins官网:https://www.jenkins.io/ 

1、编写docker-compose.yml

在opt目录下创建目录:mkdir docker_jenkins
进入目录,创建data目录:mkdir data,并赋予权限:chmod 777 data,然后再编辑docker-compose.yml


2、运行并访问Jenkins

启动容器:docker-compose up -d
查看日志:docker-compose logs -f 

浏览器中访问:http://192.168.3.20:8888

 6、配置Jenkins可以免密登录:生产环境、gitlab

1、jenkins连接生产环境(目录服务器)

https://www.bilibili.com/video/BV15e411W75G?p=2

2、jenkins免密登录gitlab

 https://www.bilibili.com/video/BV15e411W75G?p=3

3、实现持续交付持续部署

https://www.bilibili.com/video/BV15e411W75G?p=7

 

 

 

https://www.bilibili.com/video/BV15e411W75G?p=8

 

 

 

 

1、springboot

https://www.bilibili.com/video/BV15e411W75G?p=97

1、src目录

2、常用注解

@Configuration:代表当前类是一个配置类
    @Bean:构建一个实例,放到spring容器中
    @SpringBootApplication是一个组合注解
       @SpringBootConfiguration:就是@Configuration,代表启动类就是一个配置类        
       @EnableAutoConfiguration:实现自动装配
           1、Springboot工程启动时,运行一个SpringFactoriesLoader类
           2、这个类会加载META-INF/spring.factories配置,只会加载pom中引入了       
       @ComponentScan
           相当于<context:component-scan basePackage="包名" /> 

3、热加载

1、加入依赖

2、勾选build project automatically 

3、修改完后,点击build>build projcet。build完成后,刷新就可以看到修改后的效果了

4、mybatis配置

https://www.bilibili.com/video/BV15e411W75G?p=106

指定xml的扫描路径、配置实体类别名的扫描包、字段有实体属性的映射配置(驼峰映射,eg:字段user_name映射到属性userName)

5、输出执行的sql语句

6、springboot整合pageHelper分页

https://www.bilibili.com/video/BV15e411W75G?p=107

按照视频操作一遍:https://www.bilibili.com/video/BV15e411W75G?p=109

 中间的课程

先将springcloud学了:

https://www.bilibili.com/video/BV15e411W75G?p=140

2、SpringCloud

1、SpringCloud介绍

1、微服务架构只是一个样式,或一个风格

(可以遵循,也可以不遵循,像RESTful)

https://martinfowler.com/articles/microservices.html

总结:将复杂臃肿的单体应用进行细粒度的划分,每个拆分出来的服务各自打包部署。

2、SpringCloud是微服务架构落地的一套技术栈

1、SpringCloud中的大多数技术都是基于Netflix公司的技术进行二次研发。
2、SpringCloud 的中文社区网站:http://springcloud.cn/
3、SpringCloud的中文网:http://springcloud.cc/
4、八个技术点:
    Eureka:服务的注册与发现
    Robbin:服务之间的负载均衡
    Feign:服务之间的通讯
    Hystrix:服务的线程隔离以及断路器(服务降级)
    Zuul:服务网关
    Stream:实现MQ的使用
    Config:动态配置
    Sleuth:服务追踪

2、服务的注册与发现-Eureka

Eureka就是帮助我们维护所有服务的信息,以便服务之间的相互调用

1、创建工程springcloud、创建eureka-server模块,并启动【单机版的eureka】:https://www.bilibili.com/video/BV15e411W75G?p=143

2、Eureka的细节

    1、EurekaClient启动时,将自己的信息注册到EurekaServer上,EurekaServer就会存储EurekaClient的注册信息
    2、当EurekaClient调用服务时,本地没有注册信息的缓存时,去EurekaServer中去获取注册信息。
    3、EurekaClient会通过心跳的方式和EurekaServer进行连接。(默认30秒EurekaClient会发送一次心跳请求,如果超过了90秒,还没有发送心跳信息的话,EurekaServer就认为该EureClient宕机了,将该EurekaClient从注册表中移除)

    4、EurekaClient每隔30s去EurekaServer获取注册表,如果有更新,就更新本地注册表

    5、Eureka的自我保护机制,统计15分钟内,如果一个服务的心跳发送比例低于85%,EurekaServer就会开启自我保护机制
        1、不会从EureServer中移除长时间没有收到心跳的服务。
        2、EureServer还是可以正常提供服务的。
        3、网络比较稳定时,EurekaServer才会开始将自己的信息被其他节点同步过去。

    6、CAP定理
        C:一致性;A:可用性;P:分区容错性
        这3个特性在分布式环境下,只能满足2个,而且分区容错性在分布式环境下,是必须要满足的,只能在C、A之间进行权衡。
            如果选择CP,保证了一致性,可能会造成系统一定时间内不可用,如果同步数据的时间比较长,造成的损失大。
          Eureka是一个AP效果,高可用集群,Eureka集群是无中心,Eureka即便是有几个宕机,也不会影响使用;
            因为不需要重新推举master,只是会导致一定时间内数据不一致

3、服务间的负载均衡-Robbin

    Robbin是实现服务与服务的负载均衡,Robbin属于客户端负载均衡
    客户端负载均衡:在EurekaClient端实现的负载均衡
    服务端负载均衡:在EurekaServer端实现的负载均衡(eg:Dubbo)

Robbin的4种负载均衡策略:
    RandomRule:随机策略
    RoundRobbinRule:轮询策略
    WeightedResponseTimeRule:默认会采用轮询的策略,后续会根据服务的响应时间,自动给你分配权重
    BestAvailableRule:根据被调用方,并发数最小的去分配

4、服务间的调用(通讯)-Feign

通过Feign,直接通过接口,就可以直接调用其他服务,不用在调用的地方写请求地址了。

Feign传递参数的方式
    注意事项:
        1、如果传递的参数,比较复杂,默认会采用POST的方式
        2、传递单个参数时,推荐使用@PathVariable
            如果比较参数比较多时,也可以采用@RequestParam,在@FeignClient对应的接口中记得要写value属性
        3、传递对象时,统一采用json方式,添加@RequestBody
        4、在@FeignClient对应的接口必须采用@RequestMapping 

5、服务的隔离及断路器-Hystrix

https://www.bilibili.com/video/BV15e411W75G?p=156

6、服务网关-Zuul

https://www.bilibili.com/video/BV15e411W75G?p=166

    Zuul解决的问题
        1、维护所有服务的ip、port,简化客户端访问方式
        2、在Zuul进行认证、授权控制,避免在每一个服务中添加认证、授权
        3、减轻成本;减轻服务拆分、合并的成本
        4、将安全性校验统一放到Zuul

1、Zuul监控界面

https://www.bilibili.com/video/BV15e411W75G?p=167 

7、服务间消息传递-Stream

 

8、服务的动态配置-Config

 

9、服务的追踪-Sleuth

 

3、ElasticSearch

ElasticSearch、kibana安装视频:https://www.bilibili.com/video/BV15e411W75G?p=56

如果elasticsearch没有启动,启动ElasticSearch:进入elasticsearch的docker-compose.yml所在目录,

然后执行:docker-compose up -d

ElasticSearch访问地址:http://192.168.3.20:9200/

kibana访问地址:http://192.168.3.20:5601

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值