RabbitMQ
一、MQ的概述1.1 同步调用存在的问题微服务间基于Feign的调用就是同步方式,存在一些问题。 1.2 异步调用的优缺点异步调用最常见的就是事件驱动模式 优势: 服务解耦 性能提升,吞吐量提升 故障隔离 流量削峰 缺点: 一来与Broker的可靠性、安全性,吞吐能力 架构复杂了,业务没有明显的流程线,不好追踪管理。 1.3 MQ的常见架构MQ,中文是消息队列,字母意思就是存放消息的队列。也就是事假驱动中的Broker。 二、部署RabbitMQ2.1 RabbitMQ的概述RabbitMq是基于Erlang语音开发的开源消息中间件。 publisher:生产者,也就是发送消息的一方 consumer:消费者,也就是消费消息的一方 queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理 exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。 virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue 上述这些东西都可以在RabbitMQ的管理控制台来...
Maven
Maven简介 Maven是什么 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM) POM(Porject Object Model):项目对象模型 Maven的作用 项目构建:提供标准的、跨平台的自动化项目构建方式 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题。 统一开发结构:提供标准的、统一的项目结构。 Maven的基础概念1.仓库仓库:用于存储资源,各种jar包。 仓库分类: 本地仓库:自己电脑上存储资源的仓库,链接远程仓库获取资源。 远程仓库: 中央仓库:Maven团队维护,存储所有资源的仓库。 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源。 私服的作用: 保护具有版权的资源,包含购买或自主研发的jar 中央仓库中的jar都是开源的,不能存储具有版权的资源。 一定范围内共享资源,仅对内部开放,不对外共享。 2.坐标 什么是坐标? Maven中的坐标用于描述仓库中资源的位置。 Maven坐标的组成 groupId:定义当前Maven项目隶属组...
Redis
1. 初始RedisRedis诞生于2009年全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。 特征: 键值型,value支持多种不同数据结构,功能丰富。 单线程,每个命令具备原子性 低延迟,速度快(基于内存、IO多路复用、良好的编码)。 支持数据的持久化 支持主从集群、分片集群 1.1 Redis的单机安装 Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖: 1yum install -y gcc tcl 上传redis压缩包到Linux 解压缩 1tar -zxzf redis-6.2.6.tar.gz 进入解压好的redis目录 1cd redis-6.2.6 编译运行 1make && make install 默认的安装路径是在 /usr/local/bin目录下: 该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中: redis-cli:是redis提供的命令行客户端 redis-server:是redis...
Elasticsearch
一、概述Elasticsearch 是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。 Elasticsearch 结合Kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。 Elasticsearch 是Elastic stack的核心,负责存储,搜索,分析数据。 Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。 Lucene的优势: 易于扩展 高性能 Lucene的缺点: 只限于Java语言开发 学习曲线陡峭 不支持水平扩展 2004年ShayBanon基于Lucene开发了Compass。 2010年Shay Banon重写了Compass,取名为Elasticsearch。 相比与lucene,elasticsearch具备下列优势: 支持分布式,可水平扩展 提供Restful接口,可被任何语言调用 1.1 正向索引和倒排索引正向索引,做局部内容检索效果较差 传统数据库(如Mysql)采用的...
Docker
项目部署问题 Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包形成可移植镜像 Docker应用运行在容器中,使用沙箱机制,相互隔离 Docker如何解决开发、测试、生产环境有差异的问题? Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行 一、Docker架构1.1 基本概念镜像:Docker将应用程序及其所需要的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离 ,对外不可见。 DockerHub:DockerHub是一个DockerHub镜像托管平台。这样的平台称为Docker Registry。 1.2 架构Docker是一个CS架构,由两部分组成: 服务端(server):Docker守护进程,负责处理Docker命令,管理镜像、容器等。 客户端(client):通过命令或RestAPI向Docker服务端发送命令。可以在本...
Linux
Linux文件系统的目录结构Linux中一切皆文件。/是Linux的根目录。 bin:存入Linu的一些命令,实际存放在usr/bin,根目录下的bin是一个链接 etc :存放系统管理所需要的一些配置文件。 opt:系统提供给存放第三方资源的地方。 学习Linux常用: 123456# 清空屏幕clear# 显示命令历史记录history# tag键自动补全# 上键。显示上一个操作的命令。下键同理 系统管理关机重启 关机 12345678# 默认一分钟后关机。(shutdown 3)3分钟后关机。(shutdown 15.28)15点28分钟关机。shutdown# 取消关机shutdown -c# 立刻关机shutdown now# 重启shutdown -r now 重启 1reboot 将数据由内存同步到硬盘中 1sync Linux中的进程和服务计算机中,一个正在执行的程序或命令,叫做进程(process)。 启动之后一只存在、常驻内存的进程,一般被称做服务。 systemctl 基本语法: start:启动服务 stop:关闭服务 resta...
SpringCloud
一、什么是微服务1.1 认识微服务1.1.1 单体架构将业务的所有功能集中在一个项目中开发,打包成一个包部署。 优点: 架构简单 部署成本低 缺点: 耦合度高 1.1.2 分布式架构根据业务功能对系统 进行拆分,每个业务模块作为独立项目开发,称为一个服务。 优点: 耦合度低 有利于服务升级拓展 1.1.3 服务治理分布式架构要考虑的问题有很多 服务拆分粒度如何? 服务集群地址如何维护? 服务之间如何实现远程调用? 服务健康状态如何感知? 1.1.4 微服务微服务是一种经过良好架构设计的==分布式架构==方案,微服务架构的特征: 单一职责:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。 面向服务:微服务对外暴露业务接口。 自治:团队独立、技术独立、数据独立、部署独立。 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题。 1.2 微服务结构微服务这种方案需要技术框架落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴...
SpringBoot
基础入门-SpringBoot-HelloWorld系统要求 Java 8 Maven 3.3+ IntelliJ IDEA 2019.1.2 Maven配置文件新添内容: 123456789101112131415161718192021222324252627282930<!-- 存放jar包的位置 --><localRepository>D:/Program Files/Maven/maven-lib</localRepository><!--阿里云的镜像地址--><mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror...
Mybatis
Mybatis简介1. Mybatis的特性 Mybatis支持定制化SQL,存储过程以及高级映射的优秀的持久层框架。 MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和ava的POJO(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录。 MyBatis是一个半自动的ORM (Object Relation Mapping)框架。 2. Mybatis的下载Mybatis的下载地址:https://github.com/mybatis/mybatis-3 Mybatis的快速入门 新建maven工程 打包方式修改成jar包 1<packaging>jar</packaging> 引入依赖 12345678910111213141516171819202122232425262728<dependencies> <!-- Mybatis核心 --> <dependency>...
SpringMVC
SpringMVC简介什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等。 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。 V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据。 C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器。 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller 调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果 找到相应的View视图,渲染数据后最终响应给浏览器。 什么是SpringMVCSpringMVC是Spring的一个后续产品,是Spring的一个子项目。 SpringMVC 是 Spring 为表述...