架构之路

JerryXia 发表于 , 阅读 (0)

搜索

搜索作为一个站点比较基本的功能,通常是不太可能直接查询数据库,特别是用户相关的系统,我们通常会先将需要查询的数据建立索引,在查询时,只需到索引库中进行查询,一旦建立了索引,就应该想到什么时候更新索引,特别是一些比较实时的业务数据等。当然,不是只有需要搜索的数据才能使用搜索技术,前台大部分数据库都可以使用搜索技术,这不仅减小数据库的压力,也会使得系统查询能力得到很大提升。常用的搜索实现有LuceneSolrElasticSearch(推荐)。

arch8.png

服务解耦

当服务模块越来越多时,服务之间的依赖关系有可能就变得比较复杂,或者说比较重,一个服务就被多个服务所依赖,那么这个服务将变成一个依赖瓶颈,一旦该服务不可用,则有可能影响比较大,如下面这种:arch9.png这里短信服务已经被多个模块所依赖,这时我们可能就需要进行解耦,即通过一个中间层解除服务之间的,其中消息中间件(MQ)无疑是比较好的解决方案: