动态数据的高性能框架

kck的Python项目详细描述


#kck
老的两件难事开玩笑("计算机科学中有两件难事:
缓存失效、命名和一个错误关闭")以缓存失效开始,因为它经常出现。缓存可能意味着性能提高10倍甚至1000倍,因此我们开发人员喜欢缓存一些东西。

基于事件的
缓存失效是确保缓存数据
合理刷新的方法之一。而且这可能很棘手。



使用sql chops可以在下午为新的react应用程序构建一个后端。有了一点
python,就可以很容易地将数PB的公司数据转换为C级仪表板的
简单统计数据。
***它真的很快。**kck管理进出Postgres的数据,因此它可以保持
其数据产品的最新稳定性,但它提供来自构建在
cassandra上的缓存的数据,只要它在
缓存中,数据就会立即到达应用程序。在
应用程序需要数据之前,kck有助于确保数据在缓存中并保持新鲜。
**与其他应用程序配合得很好。**kck使使用sql和sqlalchemy变得很容易,但它也对django很友好,它很乐意接受来自任何可以与python对话的源的数据。
***include http server with jwt.*kck可通过include http server访问,该服务器可以选择使用jwt对客户端进行身份验证。
**使小型数据库服务器看起来很快。**说真的。kck将数据库压力
降至最低,然后将其分散开来,这样您的数据库写入就不必与web服务器和后台任务的大量读取流量竞争。缓存的写操作在todo列表中。
**designed to scale.*kck
所依赖的http服务器和cassandra集群都可以水平扩展。

status
这些代码都不应在生产中使用。它已经到了那里,但是,现在,请期待
问题并提交合并请求。


在完成的各个阶段,核心部分是缓存、http服务、刷新工作器和进程工作器。每个缓存的状态如下所示。

缓存未命中可能会导致启动"引物",返回数据并在退出时将其存储在缓存中,这样下次请求时它将更快地可用。缓存项可以无效,也可以设置为在一定时间后过期。*但是,缓存条目也可以在数据更新时自动刷新,或者在设置的时间间隔内刷新,甚至在系统启动时也可以刷新。它是非常基本的,只需一个/fetch和一个/update,还有,
可选的jwt身份验证,因此它可以用作移动应用程序的后端,或者
使用react或angular创建的较新javascript web应用程序。因此,在一个非常简单的包装器中有很多功能,它很容易被其他服务、语言、进程等消耗。需要有一个刷新工作器和一个进程工作器在运行,
这两个工作器都还没有工作。

一旦我坐下来写了它。


不幸的是,刷新工人比流程工人更重要,所以我
先解决它。我刚刚完成了后台刷新队列
代码的彻底检查,它的工作方式非常简单,但它需要可伸缩性,它需要
比当前的刷新任务更仔细地选择要刷新的任务,然后才能
达到规范要求。因此它还需要几周的时间。

可扩展。
下图显示了KCK系统结构的基本原理。





![缩放kck](https://gitlab.com/frameworklabs/kck/raw/master/misc/kck_system_design.png)



简单地说:
`pip install kck`
或将"kck"添加到项目中的requirements.txt中,并执行"pip install-r requirements.txt"


>若要安装开发版本,请将此行添加到requirements.txt中:

`-e git+https://gitlab.com/frameworkabs/kck.git=kck`

` pip install-r requirements.txt`

它告诉kck如何与cassandra集群和数据源通信。
我建议将它放在项目的所有其他设置文件旁边。类似于:
`` cassandra:
主机:["cassandra"]
键空间:我的项目
表:
主缓存:主缓存
次缓存:秒缓存
排队更新:排队更新
排队刷新:排队刷新
排队刷新计数器:排队刷新计数器

kck:
prime_on_cache_miss:false
primers_dirpath:/project/frameworkabs/my_project/kck/kprimers
updaters_dirpath:/project/frameworkabs/my_project/kck/kupdaters直截了当。定义表名不太可能需要用户更改,因此它的可配置性将继续更改。现在,复制。

kck部分:

如果属实,
>请求会一直阻塞,直到所请求密钥的底漆完成为止。



primerprimerprimerdirpath
这定义了所有底漆驻留的目录


更好的配置
yaml变得有点乏味。我倾向于在这一步走得太远之前使用simpleconfig。使用kck定义更新程序和启动程序目录的应用程序体系结构很尴尬。我认为,如果我们提供包含updater和primer类的模块的名称,我们也可以同样灵活。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Oracle将休眠为ISO 8601日期格式   当有线程时,swing计时器不会停止。睡在Java里面   如何使用swing在java中清空密码字段值(字符串)   如何在编辑文本字段上设置单词java(安卓)   单独类中的java OkHttp请求   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   java在科尔多瓦的ActivityResult上传递   java如何在映射中保持插入顺序。工厂?   “DataOutputStream”和“ObjectOutputStream”之间的java差异   java从FTP文件列表中获取项目的时间戳   java如何在spring security中为每个人忽略一些资源/URL?   模板类嵌套时新的Java泛型类构造函数问题   java读取并查找文件大小为1GB的行   java如何使用字符串say“stop”停止整数格式的while循环   java是否可以在应用程序启动之间将JVM保留在内存中?   java Springboot出现“出现意外错误(类型=内部服务器错误,状态=500)”的问题