SpringCloud实用篇
微服务介绍需要学习哪些微服务知识?
认识微服务服务架构单体架构
分布式架构
微服务
总结
微服务技术对比
企业需求
SpringCloud
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验.
服务拆分及远程调用服务拆分
远程调用远程调用方式订单模块可以像浏览器一样给用户模块发送一个得到用户信息的请求, 用户模块收到请求, 将用户信息响应回给订单模块.
基于RestTemplate发起的http请求实现远程调用http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。
远程调用步骤
注册RestTemplate
因为是订单模块要向用户信息模块发请求, 所以在order-service的OrderApplication中注册RestTemplate
12345678910111213@MapperScan(" ...
RabbitMQ入门
MQ介绍MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。
比较常见的MQ实现:
ActiveMQ
RabbitMQ
RocketMQ
Kafka
RabbitMQ
ActiveMQ
RocketMQ
Kafka
公司/社区
Rabbit
Apache
阿里
Apache
开发语言
Erlang
Java
Java
Scala&Java
协议支持
AMQP,XMPP,SMTP,STOMP
OpenWire,STOMP,REST,XMPP,AMQP
自定义协议
自定义协议
可用性
高
一般
高
高
单机吞吐量
一般
差
高
非常高
消息延迟
微秒级
毫秒级
毫秒级
毫秒以内
消息可靠性
高
一般
高
一般
追求可用性:Kafka、 RocketMQ 、RabbitMQ
追求可靠性:RabbitMQ、RocketMQ
追求吞吐能力:RocketMQ、Kafka
追求消息低延迟:RabbitMQ、Kafka
安装RabbitMQ单机部署我们在Centos7虚拟机中使用Docker来安装。
下载镜像方式 ...
Docker入门
初识Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。
分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。
在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题
应用部署的环境问题大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异
例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
Docker解决依赖兼容问题而Docker确巧妙的解决了这些问题,Docker是如何实现的呢?
Docker为了解决依赖的兼容问题的,采用了两个手段:
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
将每个应用放到一个隔离容器去运行,避免互相干扰
这样打包好的应用包中,既包含应用本身,也保护应用所需要的Libs、Deps,无需再操作系统上安装这些,自然就不存在不同应用之间的兼容问题了。
虽然解决了不同应用的兼容问题, ...
Java8新特性
Lambda表达式介绍Lambda表示最初我们学习线程时, 是以下面方法创建并开启线程的
12345678910111213class MyThread implements Runnable { @Override public void run() { System.out.println("hello world"); }}@Testpublic void test() { MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start();}
后来我们学会了匿名内部类, 代码精简了很多, 但还是很冗余
123456789@Testpublic void test1() { new Thread(new Runnable() { @Override public void run() ...
Redis实战篇
将Token保存到Redis中
将手机号码(String)为key, 验证码(String)为value存入Rediskey, value均是字符串的方法:
stringRedisTemplate.opsForValue().set(String key, String value, long timeout, TimeUnit unit)
12345678910111213141516171819202122232425@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Overridepublic Result sendCode(String phone, HttpSession session) { //1.校验手机号是否合法 if(RegexUtils.isPhoneInvalid(phone)) { //2.不合法返回错误信息 return Result.fail("手机号不合法"); } //3.合法发 ...
Java IO流
字符流与字节流字节流和字符流的概念Java对于文件处理是按照流的方式进行操作的(和C++ 类似 都会用到一个缓冲区),按照处理数据的单位可以分为字节流和字符流。
按照输入输出的方向可以分为输入流和输出流。
字节流:每次读入或输出的是8位二进制。
字符流:每次读入或输出的是16位二进制,即两个字节。
根据Java API规范:
FileOutputStream用于写入原始字节流,例如图像数据。
FileWriter,用于编写字符流,例如写文本。
节点流与处理流
File对象创建文件对象相关构造器和方法
123new File(String pathname) //根据路径构建一个File对象new File(File paraent, String child) //根据父目录文件+子路径构建new File(String parent, String child) //根据父目录-子路径构建
在E盘下三种创建文件的方法
123456789101112131415161718第一种:String filePath ...
协议栈与WEB服务器
数据包结构定义
包结构定义1234567891011121314151617181920212223242526#define XNET_CFG_PACKET_MAX_SIZE 1516 // 收发数据包的最大大小/** * 网络数据结构 */typedef struct _xnet_packet_t{ uint16_t size; // 包中有效数据大小 uint8_t * data; // 包的数据起始地址 uint8_t payload[XNET_CFG_PACKET_MAX_SIZE]; // 最大负载数据量}xnet_packet_t;xnet_packet_t * xnet_alloc_for_send(uint16_t data_size); //定义包发送函数xnet_packet_t * xnet_alloc_for_read(uint16_t data_size); //定义包读取 ...
计算机网络原理
概述概念
组成
分类
总结
性能指标速率
带宽
吞吐量
时延
往返时延(RTT)
时延带宽积
利用率
总结
分层结构为什么要分层 (1)发起通信的计算机必须将数据通信的通路进行激活。(2)要告诉网络如何识别目的主机。(3)发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。(4)发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作。(5)确保差错和意外可以解决。
分层结构
总结
参考模型OSI模型OSI模型
OSI流程简介网络层及以上,每一层都要对上一层发送的数据进行处理(加个头部)数据链路层不仅需要加头部,还需要加尾部物理层什么都不加,只管发送数据(比特流)
TCP/IP模型
五层参考模型及其传输过程简介
物理层(Physical Layer)基本概念电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。这就叫做”实体层”,逼格高一点的叫法就是物理层。它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。至于0和1的信号是什么,还轮不到物理层还决定。
数据通路 ...








