博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Evernote相关技术介绍——mysql+lucene+tomcat
阅读量:5819 次
发布时间:2019-06-18

本文共 913 字,大约阅读时间需要 3 分钟。

Evernote服务

我们的服务由以下几个组件组成。

分片(NoteStore)

 

分片是Evernote服务的核心单元,用于存储用户的笔记。每个分片最多可以支撑30万个Evernote用户,并包含了如下几个组件。

  • 基于Tomcat的前端Web服务层:Evernote客户端会连接到这个层。
  • 数据存储层:用于存储用户笔记的MySQL数据库。
  • 搜索索引:基于Lucene的服务端搜索索引,用于搜索用户的笔记内容。

我们总共有762个分片,存储着2亿个用户账号和大约50亿个用户笔记。

UserStore

UserStore使用MySQL数据库来存储用户信息,包括他们的认证信息。因为数据库管理着所有用户的状态和认证信息,所以它是最为关键也是最为复杂的一个组件,在迁移过程中我们需要格外小心。

用户附件存储(资源)

我们有一个单独的文件存储层,用于存储50亿个用户附件(我们把这些附件称为资源)。这个层由206个自包含的WebDav服务器组成。每个用户附件有三个副本,其中两个分别被保存到本地的两个不同的WebDev服务器上,另外一个被发送到远程灾备数据中心的WebDav服务器上。

前端负载均衡

我们的高可用负载均衡器集群负责将用户请求路由到特定的分片上。

配套服务

我们还有200多台Linux服务器用于缓存和执行批处理任务,比如笔迹识别和文本识别。

我们的迁移可选方案

Evernote服务规模庞大,向云端迁移是一项复杂的工程,我们需要作出很多与依赖项有关的决策。我们希望能够尽快完成迁移,所以我们为关键性决策制定了一个草案。

我们要先理清楚需要做出哪些变更。我们知道,有些组件无法直接被简单地迁移到云端,所以我们把组件分为两类。

  • 转移:有些组件在CGP上能够找到几乎一样的替代品,分片、UserStore以及大部分配套服务都属于这一类。在我们的物理数据中心,这些组件都是基于Linux的,所以我们将会直接把它们迁移到云端的Linux虚拟机上。
  • 转换:在迁移过程中需要对用户附件存储、负载均衡层和识别服务(Reco)做一些重大的转换。对于这些组件来说,要么在云端找不到相应的替代方案,要么云端已经存在更好的替代方案。

迁移方法

转载地址:http://acwdx.baihongyu.com/

你可能感兴趣的文章
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
PIE.NET-SDK插件式二次开发文档
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>