spring优点:
高内聚、低耦合:避免了关键字new的耦合问题,不需要进行明确的引用关系传递,通过配置就能完成
bean工厂:本身就是个bean工厂,bean管理
aop切面编程
通过配置进行事务管理
方便集成其他框架
代理开发模式
spring核心:IOC,aop

springboot:“约定大于配置”
没有繁琐的配置,继承方便
不会产生多余的代码和xml
简化maven配置
启动方便 有内置serverlet java -jar xx.jar
@SpringBootApplication就能启动:三个注解的集合,核心是@EnableAutoConfiguration

简化编码,独立运行spring
简化配置,可以完全不使用XML配置文件,只需要自动配置和java config
简化部署,内置Servlet,降低了对运行环境的要求,java -jar即可执行
简化监控,应用监控
简化项目初始搭建,常用第三方框架,都有对应组件,项目搭建得以简化

dubbo:
调用关系说明:
服务容器启动,加载,运行服务提供者。
提供者在启动的时候,向注册中心注册自己提供的服务。
服务消费者启动的时候,向注册中心订阅自己所需的服务
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将机遇长连接推送变更数据给消费者。
服务消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,通过调用失败,再选另一台调用。
服务消费者和提供者,在内存中累积调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

springCloud:
五大组件:eureka,ribbon,hystix,feign,zuul
eureka是注册中心,eureka client将所有服务注册到eureka server,eureka
serve是个注册中心,里面有个注册表,记录了所有服务所在的机器和端口,client还可以反过来从server拉取注册表,从而知道所有服务在哪里

feign的关键机制就是动态代理,在某个接口加了@FeignClient注解,这个接口就会产生动态代理,该代理会根据接口的requestMapping注解来构造出你要的服务地址,针对这个地址发起请求
Ribbon的作用是负载均衡,每次请求过来选择一台服务器,均匀的吧请求分发到各个机器上
Zuul微服务网关,可以做统一的降级,认证等
Hystrix熔断器,可以做服务降级和服务自动恢复,服务隔离,避免服务雪崩

RESTful API
看Url就知道要操作的资源是什么,是操作车辆还是围栏
看Http Method就知道操作动作是什么,是添加(post)还是删除(delete)
看Http Status Code就知道操作结果如何,是成功(200)还是内部错误(500)

Redis更新的正确方法
先删除再更新是错误的逻辑,会产生脏数据
写流程:
1.先淘汰cache(删除缓存)
2.再写DB(更新数据库)
读流程:
1.先读cache,如果数据命中hit则返回
2.如果数据没有命中miss则读DB
3.讲DB中读取出来的数据加入缓存

先更新数据库,后删除缓存(建议,使用场景最多),但是,是不是这个就不会有并发问题了?不是的,比如,一个是读操作,但是没有命中缓存,然后就到数据库中取数据,此时来了一个写操作,写完数据库后,让缓存失效,然后,之前的那个读操作再把老的数据放进去,所以,会造成脏数据。

Redis基于内存的高性能key-value数据库

定期通过异步操作将数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis性能非常出色,不但如此,可支持的数据结构非常多。单个value的最大限度是1GB,不像memcached只能保存IMB的数据。

优点:读写速度快,支持做种数据类型,支持事物,操作都是原子性,所谓原子性就是对数据要么全部执行,要不全部不执行;可用于缓存,消息,按key设置过期时间,过期后自动删除。
redis具有主从复制特性,master最好不要做智久化工作,包括快照和AOF日志文件,不要启用内存快照做持久化,主从最好在同一局域网内。
如何保证redis的数据都是热点数据
相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略(回收策略)。redis 提供 6种数据淘汰策略:

volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据

技术
©2019-2020 Toolsou All rights reserved,
TypeScript-多态篇Linux 文件名合法性检测el-select获取选中项label值Element-UI二次封装实现TreeSelect 树形下拉选择组件python 中的短路逻辑明明是post请求为什么会在地址栏显示参数?(精华)2020年6月26日 C#类库 读取json配置文件帮助类element ui 下拉框搜索功能(精华)2020年6月26日 C#类库 文件读写操作帮助类mybatis系列之返回结果映射