第一章 初识 Spring Cloud
一、微服务架构
"微服务”一词源于 Martin Fowler的名为 Microservices的博文。
微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些
小型服务都在各自独立的进程中运行,服务之间一般通过 HTTP 的 RESTfuL API 进行通信协作。
由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
文件:590m.com/f/25127180-502617609-6ac16a(访问密码:551685)
二、走进 Spring Cloud
Spring Cloud 是一系列框架的有序集合,他不是一个简单的框架,他是一套解决方案。
Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服
务框架组合起来。
通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单
易懂、易部署和易维护的分布式系统开发工具包。
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配
置中心、消息总线、负载均衡、 断路器、数据监控等,都可以用Spring Boot的开发风格做到一键
启动和部署。
Spring Cloud项目官方网址:https://spring.io/projects/spring-cloud
Spring Cloud 版本命名方式采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺
序,比如:最早的Release版本:Angel,第二个Release版本:Brixton,然后是Camden、
Dalston、Edgware,Finchley,Greenwich,Hoxton。
Spring Cloud Version Spring Cloud Alibaba Version Spring boot Version
Spring Cloud Edgware 1.5.1.RELEASE 1.5.X.RELEASE
Spring Cloud Finchley 2.0.2.RELEASE 2.0.X.RELEASE
Spring Cloud Greenwich 2.1.2.RELEASE 2.1.X.RELEASE
Spring Cloud Hoxton.RELEASE 2.2.0.RELEASE 2.2.X.RELEASE
Spring Cloud Hoxton.SR3 2.2.1.RELEASE 2.2.5.RELEASE
目前最新的是Hoxton版本。
• 微服务就是将项目的各个模块拆分为可独立运行、部署、测试的架构设计风格。
• Spring 公司将其他公司中微服务架构常用的组件整合起来,并使用 SpringBoot 简化其开发、配置。称
为 Spring Cloud
• Spring Cloud 与 Dubbo都是实现微服务有效的工具。Dubbo 性能更好,而 Spring Cloud 功能更全
面。
第二章 服务通信的问题
所谓微服务就是要将一个臃肿的项目拆分成多个细分业务的服务,要解决的就是三高问题。
高性能:响应要快,
高并发:人多了不蹦
高可用:崩了一些服务器还能用
首先我们解决第一个问题、多个服务之间怎么通信呀
服务之间通信,两个后台通信,就是我们的网络通信,可以是socket写,当然我们有更简单的http
这类的框架很多,httpclient,okhttp等都行
一、RestTemplate 远程调用
Spring提供的一种简单便捷的模板类,用于在 java 代码里访问 restful 服务。
其功能与 HttpClient 类似,但是 RestTemplate 实现更优雅,使用更方便。
以下内容无关:
-------------------------------------------分割线---------------------------------------------
find
find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找
命令格式:·find path -option [-print] [ -exec/-ok command {} \ ];
print: 将匹配的文件输出到标准输出
exec:对匹配的文件作为参数 让 command 命令执行。{} 是匹配文件的占位符
ok: 和 exec 的作用相同,但在执行命令之前,会给出提示,让用户来确定是否执行
常用的option 选项 | 描述
-mount | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n | 在过去 n 分钟内被读取过
-atime n | 在过去 n 天内被读取过的文件
-cmin n | 在过去 n 分钟内被修改过
-ctime n | 在过去n天内被修改过的文件
-gid n | gid 是 n 文件。或 -group name, group 名称是 name 的文件
-pid n | pid 是 n 的文件
-ipath p | 路径名称符合 p 的文件。或 -path p,ipath 会忽略大小写
-name name | 文件名称符合 name 的文件。或者-iname name,iname 会忽略大小写
-size n | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type c | 文件类型是c的文件。 d: 目录;f: 一般文件;l: 符号连结;s: socket
find 示例
~~ 查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们
find /var/log -type f -mtime +7 -ok rm {} ;
touch 和 vim
touch 可用于创建一个空文件,如果文件存在,则会更改文件的访问时间和修改时间
touch 示例
~~ #创建一个名为“file”的新的空白文件,如果存在则会修改其时间属性
touch file
vim Vim是从 vi 发展出来的一个文本编辑器,是在 linux 系统交互界面进行文件查看,编写文本的首选工具
image.png
vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
1 命令模式:用户 vim fileName,便进入了命令模式
i 切换到输入模式,以输入字符
: 冒号切换到底线命令模式
/word 向光标之下寻找一个名称为 word 的字符串
?word 向光标之上寻找一个字符串名称为 word 的字符串
n 重复前一个搜索(与 / 或 ? 有关)
N 反向重复前一个搜索(与 / 或 ? 有关)
PageUp 上翻页
PageDown 下翻页
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行
2 输入模式: 在命令模式下按下i就进入了输入模式; ESC 退出输入模式,切换到命令模式
字符按键、shift组合 输入字符
ENTER 回车键,换行
BACK SPACE 退格键,删除光标前一个字符
DEL 删除键,删除光标后一个字符
方向键 在文本中移动光标
HOME/END 移动光标到行首/行尾
Page Up/Page Down 上/下翻页
Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
3 底线命令模式: 在命令模式下按下 “:” 就进入了底线命令模式; ESC退出模式,切换到命令模式
:q 退出 vim 程序
:w 保存文件
:wq 保存后离开
:!q 不保存退出
:w [filename] 将编辑的数据储存成另一个档案
:r [filename] 在编辑的数据中,读入另一个档案的数据。追加到游标所在行后面
:!ShellCommand 暂时离开 vi 到指令行模式下执行 shellCommand 的显示结果
:%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
:%s/word1/word2/gc 和 %s/word1/word2/g 功能一致,不过每次替换都需用户确认