总体架构


1. 用例视图

系统的用户角色有两种:应用系统和搜索平台管理员。

  • 应用系统可以通过RestFul接口对数据执行CRUD操作;当业务数据变更时,可以通过发送MQ消息通知搜索平台同步数据;业务还可以通过RestFul接口修改配置数据,比如增加Suggest搜索建议词。
  • 搜索平台管理员可以通过管理台页面或者RestFul接口对搜索平台进行管理和维护,比如查看集群状态、重启应用、用户升级、搜索平台主备切换等。

2. 逻辑视图

搜索平台的逻辑视图如下:

搜索平台主要包含3个主要部件:RestFul服务、数据流、ES操作层。

  • RestFul服务对外提供RestFul接口,RestFul接口是搜索平台对外提供的唯一接口方式。
  • 数据流部件用于搜索引擎和业务系统保持数据同步,搜索平台收到MQ消息后,根据消息路由配置从业务系统拉取数据,处理后存入ES。
  • ES操作层是搜索引擎内部使用,该部件对上层业务提供统一的ES操作接口,可以根据用户AdminId路由到不同的ES集群。

3. 进程视图

搜索平台的进程视图如下:

系统中包含应用(进程)有:Listener、MsgOos、WebServer、Management、RestFulQos、Suggest、Worker:

  1. Listener,该应用主要是订阅业务MQ消息,根据配置的消息解析规则获取消息中的用户Admin编号,将消息转发到用户对应的消息队列中。
  2. MsgQos,该应用负责MQ消息的QoS(Quality of Service)。主要作用有:
    • 从用户消息队列中消费消息,并将消息放到任务队列中执行
    • 根据用户的SLA配置,控制消息的消费速度
    • 当消息消费失败时,根据用户的SLA配置重做消息
  3. WebServer,web服务器,对外提供RESTFul接口,通过uwsgi协议和Nginx连接
  4. Management,管理功能Web服务器,也通过uwsgi协议和Nginx连接,主要作用有:
    • 对外提供搜索平台管理端RestFul接口
    • 对外提供搜索平台管理台页面
  5. RestFulQos,该应用负责RestFul请求的Qos(Quality of Service)。当RestFul请求(PUT、POST、DELETE)处理失败时,会根据时间戳对请求重做
  6. Suggest,该应用负责Suggest数据操作管理。
  7. Worker,工作进程,搜索平台的后台核心应用,负责数据任务的处理。

4. 物理视图

搜索平台的服务器主要有Web服务、后台服务、QoS服务、Redis服务、Elasticsearch服务、Kafka服务。

  • Web服务器:用于部署web服务相关应用,对外提供资源Restful接口、管理端Restful接口和管理台页面。服务器是4C3G虚拟机,每台服务器上部署4个uWSGI Web应用,然后再前置一个Nginx作为反向代理。目前线上部署了6台Web服务器。
  • 后台服务器:部署后台核心应用(Listener、Suggest、Measure、Worker)。服务器是4C3G虚拟机,线上一共部署了两台后台服务器。
  • QoS服务器:负责QoS(Quality of Service),主要部署了VipMsgQoS(VIP用户MQ消息QoS)、ExperienceMsgQoS(体验用户MQ消息QoS)、RestFulQoS(RestFul请求(POST、PUT、DELETE)QoS)这三个应用。
  • Redis服务器:使用keepalived实现的Redis主备方案。主要用于MQ消息队列、缓存等。
  • Kafka服务器:用于RestFul请求(PUT、POST、DELETE)失败队列存储,和日志共用一个集群。
  • Elasticsearch服务器:目前搜索平台一共有三个ES集群:VIP用户数据集群、体验用户数据集群、备份数据集群。VIP用户集群由6台16C32G机器组成,体验用户集群由4台5C12G机器组成,备份数据集群由2台5C12G机器组成。

其中,绿色进程是通过HAProxy实现的负载均衡;红色的进程属于分布式应用,可以水平扩展;蓝色进程属于主备进程,平时只有主应用工作,主应用故障后备应用继续工作。

results matching ""

    No results matching ""