目录
nginx
Nginx是一个高性能的HTTP和反向代理web服务器,被广泛应用于互联网服务中。通过合理配置和使用Nginx,可以提高网站的性能、可靠性和安全性。
重点:
反向代理
负载均衡
docker
Docke允许开发者将应用及其依赖项打包到一个轻量级、可移植的容器中,并在不同的环境中运行,而无需担心环境差异和依赖冲突。容器是独立运行的,并且可以快速部署和启动。
相当于一个虚拟机,不过这个虚拟机没有任何其他东西,也不能做任何其他事情,只是用来安装和管理各个其他工具
Jenkins
编写流水线
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
作用:
-
持续的软件版本发布/测试项目。
-
控外部调用执行的工作。
重点:
CI/CD 是持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)与持续部署(Continuous Deployment,CD)的简称,注意CD对应了两个名词。
持续集成、持续部署
适用场景
适用于大型项目,且更新比较频繁的。微服务架构的项目多数都会用Jenkins,单体项目相对少很多。
nexus
用于管理maven私服,用于为公司提供私有服务的软件。
它是Sonatype公司的一个产品,叫Nexus,它是Maven的私服。
事实上有三种专门的Maven仓库管理软件可以帮助我们创建私服,有Apache的Archiva;JFrog的Artifactory和Sonatype的Nexus
SpringSecurity
是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
提供了一组可以在Spring应用上下文中配置的Bean,充分利用了IoC,DI和AOP功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
主要用于安全验证,权限管理。
RabbitMQ
消息队列
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。
作用
-
解耦
-
流量削峰
-
消息发布和管理
redis
缓存数据库
远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
可以理解成一个大容量的map。
-
Redis是一种非关系型数据库,也被称为NoSQL数据库。
-
它是一种基于内存的数据存储系统,主要用于缓存、会话存储、消息队列等场景。
-
Redis的数据模型是键值对(key-value)模型,不同于传统的关系型数据库,不支持SQL查询语言,也没有表、行、列的概念。
可存储的类型(5+3):
-
string:字符串数据类型
-
hash:类似于对象,map的形式
-
list:表示一种线性数据结构,队列或栈
-
set:无序不可重复集合
-
zset:有序不可重复集合
另外还有三种数据类型,都不是很常用。Geospatial、Bitmap、Hyperloglog
redis可以操作位(bit),但是工作中几乎不用。
MongoDB
非关系型数据库
NoSQL,泛指非关系型的数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
非关系型数据库类型
-
键值(Key-Value)存储数据库
-
列存储数据库
-
文档型数据库
-
图形(Graph)数据库
MongoDB
-
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。
-
是介于关系数据库和非关系数据库之间的产品
-
它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
-
它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言
-
支持对数据建立索引。
优势:
-
简单性
-
扩展性
-
高性能
-
高可用
-
存文件
应用场景非常广泛,存储数据、读写网站数据、文件存储、日志存储、缓存等。
spring cloud
是一系列框架的有序集合
利用Spring Boot的开发便利性简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
微服务和微服务架构
通过微服务思想,将原有的大而全的项目拆分成多个小而巧的项目,每个小的项目就是一个微服务,若干个微服务组成一个完整项目。
微服务架构可以提供高并发、高吞吐、高可用的特性。
nacos
微服务注册中心(发现中心)、配置中心(配置管理)
阿里旗下产品。
注册中心:后台服务启动后可以在服务管理的服务列表中进行管理
配置中心:后台服务启动时,可以读取nacos中提前写好的配置文件(统一管理)并加载进入醒目
gateway
核心功能有三个:
-
路由:用于设置转发地址的
-
断言:用来判断真实应该请求什么地址
-
过滤器:可以过滤地址和处理参数
微服务架构开发中,网关是必要有的服务,它可以统一入口,解决跨域,负载均衡,各微服务通信等微服务整体管理和通信的。
JSR3030
JSR :Java Specification Requests Java 规范提案 的缩写
任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。
JSR303是提案中的一个,用来做JavaBean校验的。
需要校验的参数在类中添加注解即可
Spring Session
是SpringCloud下管理session的框架,在微服务架构中,由于应用了分布式的思想,session无法做到内存中互通,需要一个框架来实现各个微服务中session数据共享,SpringSession解决了这个问题。
在SpringSession框架中,可以无感的实现和操作session共享。
实现Session共享的方式
-
修改Tomcat配置文件(限制很多)
-
Nginx负载均衡策略(效率硬件利用率低)
-
redis统一存储(目前最常用)
Open Feign
作用
人话:通过接口和注解的方式实现微服务之间的相互调用。通信。
-
定义服务接口:通过接口定义服务间的通信规范,不需要编写具体的实现逻辑,只需定义接口中的方法和参数。
-
自动生成实现类:根据接口定义自动生成具体的实现类,无需手动编写 HTTP 请求的处理逻辑。
-
简化调用:开发者可以通过调用接口的方式来实现服务间的调用,而不需要关注底层的 HTTP 请求细节。
-
集成其他组件:OpenFeign 更好地与 Spring Cloud 体系集成,可以方便地与其他 Spring Cloud 组件如负载均衡、断路器等配合使用。
-
提供扩展功能:OpenFeign 提供了更多的功能和配置选项,如负载均衡、断路器、请求重试等,可以满足复杂场景下的需求。
总的来说,Feign 和 OpenFeign 的作用是简化服务间通信的复杂性,提高开发效率,同时提供了一些额外的功能和扩展选项,使得在微服务架构中更加方便地进行服务间的调用和交互。
Dubbo
也是一个框架,用于微服务通信的,是由阿里巴巴开发,后捐赠给阿帕奇基金会。
-
dubbo是采用RPC协议实现微服务通信
-
OpenFeign是采用Http请求的方式实现的
应用:
创建三个工程:
-
api工程:最先创建并打包,由另外两个工程引用
api的实体类需要实现serializable接口
-
消费者工程(consumer)
-
提供者工程(provider):@Service注解要用dubbo下面的,不能用Spring的注解。
启动时,先启动consumer,后启动provider,避免报启动失败的错误。