忘川彼岸|阿里十年架构师:以宏观的角度给大家整理出13条后端需要的知识( 二 )


主流的非关系型数据库有 MongoDB 和 HBase , 后者主要用于数据库领域 。
MongoDB 是一个基于分布式的文件存储数据库 , 旨在为 Web 应用提供可扩展的高性能数据存储解决方案 。 它将数据存储为一个文档(类似于 JSON 对象) , 数据结构由键值对组成 , 类似于 Java 中的 Map , 通过 key 的方式访问起来效率就高得多 , 对吧?这也是 MongoDB 最重要的特点 。
6)搜索框架:目前用得比较多的开源软件有 Solr 和 Elasticsearch , 主要用于全文检索和各种数据维度的查询 , 后者逐渐成为搜索引擎的主流开源方案 。
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎 , 能够解决不断涌现出的各种用例 。 作为 Elastic Stack 的核心 , 它集中存储您的数据 , 帮助您发现意料之中以及意料之外的情况 。
7)消息队列:目前使用得比较普遍的消息队列有 , 基于日志设计的 Kafka , 重事务的 RabbitMQ 。 对消息丢失不是特别敏感的话 , 选择 Kafka 可以获得更高的性能 。
Kafka 由 Scala 和 Java 编写 , 目的是为处理实时数据提供一个统一、高吞吐、低延迟的平台 。 其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列” , 使得它作为企业级基础设施来处理流式数据非常有价值 。
RabbitMQ 的主要特点在于健壮性好、易于使用、高性能、高并发、集群易扩展 , 以及强大的开源社区支持 。
8)文件存储:文件存储需要满足的特性有:可靠性、容灾性、稳定性 , 能够保证文件不轻易丢失 , 还能在出现事故的时候提供回滚方案 。 Hadoop 的 HDFS 是目前最常用的分布式文件存储方案 。
除此之外 , 还有一个开源的轻量级分布式文件系统——FastDFS , 可以解决大数据量存储和负载均衡等问题 。 特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务 , 如相册网站、视频网站等等 。
9)单点登录(Single Sign On):简称为 SSO , 目前很多网站都实现了单点登录 , 当用户登录时 , 就可以获取所有系统的访问权限 , 不用对每个单一系统都逐一登录 。
忘川彼岸|阿里十年架构师:以宏观的角度给大家整理出13条后端需要的知识推荐一个还不错的分布式单点登录框架——xxl-sso , 开源的 。
10)统一配置中心:常见的有 properties、YAML 文件 , 就是可以不修改代码只修改配置文件就能够让整个项目区分开发、测试、生产环境 。
YAML 语言(发音 /?j?m?l/ )的设计目标 , 就是方便人类读写 。 它实质上是一种通用的数据串行化格式 。
对于较复杂的数据结构来说 , YAML 远远优于 properties , 可以使用冒号加缩进的方式代表层级(属性)关系 , 使用短横杠(-)代表数组元素 。
11)服务治理框架:随着互联网的发展 , 网站应用的规模不断扩大 , 常规的垂直应用架构已无法应对 , 分布式服务架构以及流动计算架构势在必行 , 亟需一个治理系统确保架构有条不紊的演进 。
忘川彼岸|阿里十年架构师:以宏观的角度给大家整理出13条后端需要的知识Dubbo 是一款高性能、轻量级的开源 Java RPC 框架 , 提供了三大核心能力:面向接口的远程方法调用 , 智能容错和负载均衡 , 以及服务自动注册和发现 。
12)统一调度中心:定时调度是一个非常普遍的场景 , 比如说定时去备份数据库 , 刷新订单状态等 。 可以依赖 Linux 的 Cron 机制 , 以及 Java 的 Quartz 框架 。
工具型软件 Cron 是一款类 Unix 操作系统下的基于时间的任务管理系统 。 用户可以通过 Cron 在固定时间、日期、间隔下 , 运行定期任务(可以是命令和脚本) 。 我最经常用的 , 就是通过 Cron 来备份 MySql 数据库 。


推荐阅读