杂七杂八的总结---其他技术

目录

Redis

适合场景

Memcache与Redis

数据类型

持久化

消息队列MQ

ActiveMQ

通信方式

kafka

Nginx

Zookeeper

Solr

WebService


Redis

内存高速缓存数据库,使用 C 语言编写,典型的 NoSQL 数据库服务器, Redis 是一个 key-value 存储系统,它支持丰富的数据类型

优点:纯内存操作, Redis 的性能非常出色,且支持保存多种数据结构,具有原子性

缺点:数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。在这个过程中, redis 不能提供服务。

Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以 redis 具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘 I/O 速度为严重影响 redis 的性能。

适合场景

  1. 会话缓存(Session Cache)
  2. 全页缓存(FPC)
  3. 队列
  4. 排行榜/计数器
  5. 发布/订阅

Memcache与Redis

  Memcache Redis
存储方式 全部在内存中,断电数据库挂掉 部分在硬盘,数据持久性
数据类型 类型相对简单 复杂数据类型
线程模型 多线程+锁 单线程+多路IO复用
value大小 1MB 1GB

数据类型

  1. String--字符串:简单的 key-value 类型, value 不仅可以是 String,也可以是数字
  2. Hash--字典
  3. List--列表
  4. Set--集合
  5. Sorted Set--有序集合:将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。

持久化

RDB持久化:指定时间间隔内生成数据集的时间点快照---------最大化Redis的性能,恢复大数据集时更快,但服务器故障时可能会丢失好几分钟的数据。

AOF持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。-----故障时,丢失数据少,但是文件体积很大,可能出现bug不能恢复数据。

无持久化:让数据只在服务器运行时存在。

同时应用AOF和RDB:重启时优先使用AOF文件还原数据集,通常AOF数据集更完整。

消息队列MQ

ActiveMQ

Apache 下的一个子项目。 类似于 ZeroMQ,它能够以代理人和点对点的技术实现队列。同时类似于 RabbitMQ,它少量代码就可以高效地实现高级应用场景。

通信方式

点到点模式--消息发送失败时,会默认保存在服务端,直到有消费者将其消费,所以消息不会丢失。

发布订阅模式--默认情况下只通知一次,消息发送失败就没了。如果要求消息必须送达,需要配置持久订阅,每个订阅端定义一个 id,在订阅时向 activemq 注册。发布消息和接收消息时需要配置发送模式为持久化。此时 如果客户端接收不到消息,消
息会持久化到服务端,直到客户端正常接收后为止。

kafka

Apache 下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统。

特性:快速持久化、高吞吐、完全的分布式系统、支持 Hadoop 数据并行加载

Nginx

nginx会把 Request 在读取完整之前 buffer 住,这样交给后端的就是一个完整的 HTTP请求,从而提高后端的效率,而不是断断续续的传递。 同样, Nginx 也可以把response 给 buffer 住,同样也是减轻后端的压力。所以,nginx可以提升服务器性能。

Zookeeper

开放源码的分布式应用程序协调服务,目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、 功能稳定的系统提供给用户

基本运转流程:1、选举 Leader。 2、同步数据。 3、选举 Leader 过程中算法有很多,但要达到的选举标准是一致的。 4、 Leader 要具有最高的执行 ID,类似 root 权限。 5、集群中大多数的机器得到响应并 follow选出的Leader。

Solr

一个独立的企业级搜索应用服务器,是高性能,采用 Java5 开发,基于 Lucene 的全文搜索服务器。

Ik 分词器的分词原理本质上是词典分词。 先在内存中初始化一个词典,然后在分词过程中挨个读取字符,和字典中的字符相匹配,把文档中的所有的词语拆分出来的过程。

WebService

是一种跨编程语言和跨操作系统平台的远程调用技术。服务器和客户端可在不同的操作系统上使用不同的编程语言编写。

 

 

你可能感兴趣的:(Java,java)