Lotus分析

一 Lotus的任务

Lotus是一个消息通知服务,topic和subscription是多对多的关系。后面我加了一个发送自定义邮件和自定义短信的功能。

产品里面有个监控报警和通知列表。监控报警里创建alarm时会让选通知给谁。供选择的就是topic。如果alarm被触发,就会发通知给和该alarm绑定的topic,topic再查找它的所有subscription,都发通知。


Lotus代码分析

1.lotus的两个进程

lotus-api

lotus-dbsync

2. lotus-dbsync

数据流程:

/usr/local/bin/lotus-dbsync启动,会去调用/lotus/cmd/manage.py的main函数。

main里会调用/lotus/db/migration.py里的dbsync函数。

migration.py里的dbsync调用了/lotus/common/utils里的LazyPluggable来动态获取backend以实现升级或降低到指定版本。

sqlalchemy=‘lotus.db.sqlalchemy.migration‘作为LazyPluggable的第四个参数,会在
lotus.db.sqlalchemy.migration里进行版本比较来实现升级或降级。

最底层的升级或降级或在migrate这个第三方库里实现,这里只调用接口即可。

这个进程的任务是对数据库的升级或降级。取决于指定的版本号。不过一般用来升级到最新。

3. lotus-api

lotus-api可以理解成跑在simple_server上的一个pecan
app。它的任务是给前端提供restful
api。

用的是pecan的路由规则。

比如:v1/topics,就会到v1这个目录里找topics.py,然后在根据是什么方法(POST/PUT等)或参数(topic_id)来确定具体调用哪个API。

目前只有有四个root
controller:statistics,topics,subscriptions,publish

(1)statistics:主要用来创建metric

(2)
topics:TopicsController里面有个lookup,可以根据topic_id路由到TopicController

TopicsController里面有两个提供给前端用的接口post和get_all。

post是创建一个topic。

TopicController:get,delete,put,publish

get:获取一个topic(由topic_id指定)的详细信息

delete:删除一个topic(由topic_id指定)

put:修改一个topic(由topic_id指定)

publish:给topic(topic_id指定)的所有subscription发alarm信息

都是对单个topic的操作。

所以我怀疑是否将TopicsController里面的post移到TopicController里面会更合适?

(3)
subscriptions:

一级SubsController,
二级是ConfirmController 和SubController。

url查找到SubController后会根据sub_id
lookup到SubController。

而ConfirmController的路由是由SubsController里面confirm
= ConfirmController()指定。

这一部分主要是订阅topic,确认等内容。subscription里面最重要的一个参数是endpoint。因为消息是发送到这个endpoint,可以是邮箱或短信方式。这里共两种protocol:email和sms。

(4)publish:

自定义发送邮件和短信。这部分是我写的,比较简单。

Publish.py
里面有严重的瑕疵,我自己造成的。

L8-L9 只能import
module(PEP8规定)

L23-L24 8,9导致这SMS()
Email() 严重不规范。

三.
DB

所有的服务都是基于数据。

lotus太小,目前只有三个table:Topic,Subscription,Topic_Sub

Topic存储topic相关字段

Subscription存储
subscription相关字段

Topic_Sub存储topic和subscription的绑定

时间: 2024-09-20 23:48:22

Lotus分析的相关文章

Lotus Blossom 行动分析

1 漏洞介绍 1.1 代号 - Lotus Blossom行动 漏洞利用率很高 从2012 —2015或者说最近都还在使用 CVE-2012-0158 Lotus Blossom--莲花: 描述了对东南亚各国政府和军事组织的持续网络间谍活动.该报告公开了目标.工具和攻击技术,并提供了关于莲花营销活动的完整详情,包括所有妥协指标.42小组 使用PaloAlto网络自动聚焦™平台发现了这些攻击,这使得分析人员能够将数百万个报告的结果与野火所产生的结果关联起来. 1.2 具体信息 CVE-2012-0

云计算下的数据库 分析 以及部分互联网公司眼下採用的新型数据库总结

云计算下的新型数据库技术 摘要:在这个信息化的时代,我们的一举一动都离不开与数据打交道,特别是云计算和大数据时代的到来,使得传统数据库的性能已无法满足海量数据的实时交易查询需求.在性能和成本的双重压力之下.云计算下的数据库须要寻找突破之路. 1.简单介绍: 云计算通过整合.管理和调配分布在互联网中的全部计算资源,以统一的界面同一时候向用户提供服务. 互联网提供的各种计算形式的应用以及提供这些服务的数据中心和软硬件基础设施.提供的服务成为软件即服务(SaaS),数据中心的软硬件基础设施即为云,这样

云计算发展与BPaaS构建企业Private PaaS分析

1. 云计算发展概述 云计算的发展[2],追根溯源是从并行计算.分布式计算.网格计算.虚拟化.SaaS.SOA 等技术混合演进的结果. 1959年6月,ChristopherStrachey 发表虚拟化论文,虚拟化是今天云计算基础架构的基石. 1996年,网格计算Globus 开源网格平台起步,网格计算是聚合分散资源,支持大型集中式应用,从技术层面面向科研计算. 2000年,SaaS 兴起. 2004年,Google 发布MapReduce 论文.Hadoop 就是Google 集群系统的一个开

lotus notes 数据库中附件的批量导出 2

Lotus Notes 数据库中附件的批量导出 Lotus Notes 数据库是一种文档型数据库,其中文档的富文本域中往往嵌入许多附件(如 Word 文档.PDF 文档.Excel 文档等).用户时常需要将这些附件导出到其他系统中进行使用处理.然而当需要导出许多文档中的附件时,只能手动逐个打开各个文档并将附件导出,然后再将附件导入到其他系统中,那么,当附件数量很大时则会大大降低效率.本文从用户角度出发,分析了若干附件批量导出的需求并给出了相应的解决方案. 引言 Notes 数据库是一种文档型数据

BestCoder Round #91 1002 Lotus and Horticulture

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 题意: 这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望. Lotus将所有的nn株盆栽都放在新建的温室里,所以所有盆栽都处于完全相同的环境中. 每一株盆栽都有一个最佳生长温度区间[l,r][l,r],在这个范围的温度下生长会生长得最好,但是不一定会提供最佳的研究价值(Lotus认为研究发育不良的盆栽也是很有研究价值的). Lotus进行了若干次试验,发现若第ii株盆

NSA Fuzzbunch分析与利用案例

Shadow Brokers泄露出一份震惊世界的机密文档,其中包含了多个 Windows 远程漏洞利用工具.本文主要介绍了其中一款工具Fuzzbunch的分析与利用案例 1 整体目录介绍 解压EQGRP_Lost_in_Translation-master.zip文件(下载地址:https://github.com/x0rz/EQGRP_Lost_in_Translation).总共包含三个目录: 1. windows目录针对Windows操作系统的利用工具和相关攻击代码: 2. swift目录

缺陷漏测分析:测试过程改进

一.漏测的定义 所谓漏测,是指软件产品的缺陷没有被测试组发现而遗漏到了用户那里,却最终被用户所发现.如果产品在用户那里出现问题,产生的后果是非常严重的.在软件开发过程中,缺陷越早被发现,发现和解决缺陷所花的成本就越小.如果缺陷是在测试组测试中发现的而不是被用户使用时发现的,那么所花的成本将小得多.如果缺陷是被开发组在开发过程中发现的,那么所花的代价将更小.因此,进行漏测分析.预防漏测.促使缺陷尽可能在开发过程的早期被发现,是非常有意义的,它有利于降低软件产品成本.提高软件产品质量. 二.漏测分析

云计算下的数据库 分析 以及部分互联网公司目前采用的新型数据库总结

云计算下的新型数据库技术 摘要:在这个信息化的时代,我们的一举一动都离不开与数据打交道,特别是云计算和大数据时代的到来,使得传统数据库的性能已无法满足海量数据的实时交易查询需求,在性能和成本的双重压力之下,云计算下的数据库需要寻找突破之路. 1.简介: 云计算通过整合,管理和调配分布在互联网中的所有计算资源,以统一的界面同时向用户提供服务.互联网提供的各种计算形式的应用以及提供这些服务的数据中心和软硬件基础设施.提供的服务成为软件即服务(SaaS),数据中心的软硬件基础设施即为云,这种虚拟化资源

Nsd宕机报告分析实例

1.  背景 作为domino从业人员,经常会遇到系统宕机的问题,可是对于很多domino者,看到nsd报告的一大堆信息,就像天书一样无从下手. 本人通过下面两种方式进行说明:手动分析.NSD工具分析.Nsd报告是技术群一朋友提供,我就结合此实例分析. 2.  手动分析 2.1. 搜索fatal关键字 打开NSD报告,输入关键字:fatal,如下图: 2.2. 搜索线程号 从上图中,可以看到系统出错的线程号为:nchronos: 1084: 2388,搜索此线程如下图: 看上图会发现,宕机时打开