Skip to content

Cloudxtreme/doc-2

Repository files navigation

code

i-MD.com code.

user

App[Android, iOS]

Web[PC, Mobile, Weixin]

server(front-end)

RESTfulAPIServer[scalatra, undertow]

WebServer[scalatra, undertow, angular]

AdminServer[scalatra, undertow, angular]

server(back-end level 1)

UserService[thrift](用户注册、登陆、认证、授权)

SearchService[thrift](文献搜索、索引)

InfoService[thrift](文献元数据)

StorageService[thrift](文献全文存储)

UserOPService[thrift](用户搜索、下载、收藏、分享、订阅、支付)

server(back-end level 2)

DownloaderService[thrift](后台文献下载)

NotifierService[thrift](后台通知、邮件、短信)

CrawlerService[thrift](爬文献)

UpdaterService[thrift](更新文献)

ManagerService[thrift](人工上传,用户数据)

data

MongoDB(主数据库)

ElasticSearch(搜索引擎)

Redis(缓存)

NewSQL(未来的新型数据库)

RocksDB(嵌入式数据库)

stack

1.构建工具用的是bazel,谷歌出品的,特点是编译速度快,清晰的依赖关系声明,多语言支持 2.既然是构建微服务程序自然少不了RPC框架,这方面选择的Thrift,另外一个是GRPC,还在开发阶段,还不是太成熟,未来可以考虑使用 3.前端WEB框架用到了scalatra,看了几乎所以的scala框架,有些框架太重了,例如play,不方便嵌入系统,有些写法上又难以接受,有些又难以使用,目前看来scalatra仍然是最佳的,而且其基于servlet,可以很好的嵌入的到容器 4.容器使用了当今最快的undertow 5.JSON解析器使用了最快的jackson的scala版本json4s 6.http client使用了相当轻量级的scalaj-http,使用原生的URLConccection 7.主数据库使用了mongodb,高性能,数据结构自由,分布式,缺点依然有,没有事务,当系统庞大的时候数据结构自由的特性反而会让系统不利于维护,没有很好的orm框架,数据的转换代码需要手写,未来希望替换成NewSQL,这方面有两个备选,一个是国产的TiDB, 一个是国外的CockroachDB,这两个还在开发阶段。还不是太成熟 8.搜索引擎是ElasticSearch,目前来看几乎是唯一的选择,数据结构自由,分布式,众多插件,强大的查询条件,便于使用,相比于Solr和Lucence简单方便,搜索引擎本来就是很难的技术,简单方便是很重要的 9.缓存数据库选择Redis,几乎也是一个唯一的选择,实在是太强大 10.嵌入数据库选择RocksDB,基于谷歌的levelDB,支持多线程,还有原生的JNI库,如果不想折腾就是它了 11.爬虫框架使用的是webmagic,提供了一个爬虫框架的教科书般的实现,高度的自定义,很适合我们的爬虫需求 12.文件存储选择了AWS S3的开源实现minio,S3几乎已经成为云存储的事实标准

约定

1.为了能够同时支持微服务架构和单一架构,采取逻辑和服务分离的方法,涉及微服务的放在service包 2.所有数据结构的定义都应该在thrift上 3.所有数据的读、写、转化都应该在Model类中 4.所有逻辑的处理都应该在Processor类中

About

i-MD.com document code.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published