2015-11-13 Lingxian Kong
更新: 2018.01,基于最新的 osc-lib 和 python-openstackclient 目标:将mistral CLI client与官方openstack client集成,bp 链接在这里,review 在这里。 还是需要 python-openstackclient 首先,openstack client是用cliff实现,所以建议先熟读cliff的官方文档,知道cliff的实现机制,这样才能对openstack client的机制有了解,这是熟悉openstack client的基础。如果你不是为了实现 openstack 命令,可以跳过此文直接参考 cliff 给出的一个示例照猫画虎即可。 cliff 继续阅读 »
2016-06-06 Li Shuai
最不喜欢在Tornado中使用任何同步阻塞型的东西,不想让ioloop阻塞在某个IO调用上,因为单线程的东西任何阻塞都是代价很高的,除非你的数据库被优化的性能很好,速度很快。除了之前的线程池之外,直接使用异步库也是不错的选择,Motor就是Tornado里可以用的很好的异步库,它兼容Tornado的gen.coroutine式的异步调用形式,主要使用了greenlet来巧妙的封装PyMongo的同步API, 把底层的socketIO进行了异步化的处理,化同步为异步。 从使用的例子来分析Motor是如何把PyMongo的API异步化的: client = motor.MotorClient(...) db = client['te 继续阅读 »
2018-10-23 AnnatarHe
flutter 是个很好的实践方案 读者可能已经知道 flutter 了,它是一个跨平台渲染框架。与之对应的还有很多 react-native 类似的方案。但是在内部实现上,Flutter 和其他地方案上还是有很大的差别的。 继续阅读 »
2014-08-02 Lingxian Kong
当你开始使用OpenStack,基本上都是从一个已搭建好的环境入手,别人(operator)会告诉你horizon登录的租户名、用户名和密码。 但毕竟horizon不会封装OpenStack的所有特性,当你已经玩腻了页面上那些功能时,你想尝试更多更丰富的功能,那么恭喜你,你已经向中级玩家迈进了一步。中级玩家对OpenStack的使用基本上有四种方式: OpenStack client cURL Rest API OpenStack SDK 我个人比较倾向于使用client和API,因为cURL的用法其实跟发送RestAPI相似,但cURL不太方便操作(因为我们普遍都喜欢在可视化页面点击按钮);而SDK则更多是基于OpenS 继续阅读 »
2016-10-17 Alex Sun
参考文章 iOS学习笔记——HTTPS原理篇 HTTPS工作原理和TCP握手机制 图解SSL/TLS协议 How to Use SSL/TLS with Node.js 在上一篇博文《Node核心模块之crypto》中,提到了加密(摘要,加密解密,签名等)的四种常见类型: Hash(哈希) HMAC(基于哈希的消息认证码) 加密,解密 签名,验证 HTTPS的整个过程和以上几种方法密切相关。 CA证书 CA 即 Certificate Authority (数字证书认证机构),CA证书的签发以及验证包含以下三方: CA Server Client 过程包括: Server生成一对公钥和私钥 Server将公钥以及域名等信 继续阅读 »
2015-01-03 Jamling
简介 Eclipse Marketplace Client(MPC),是Eclipse新插件,它允许Eclipse用户在Marketplace上搜寻和安装基于Eclipse的产品。MPC的目的旨在为Eclipse社区提供AppStore式的体验。MPC将做为Eclipse的内置插件,在eclipse.org下载界面中列出的所有的Eclipse安装包都会包含此插件。 继续阅读 »
2018-01-20 Lingxian Kong
更新历史: 2018.01.20,初稿完成 2018.02.14,更新 ansible 脚本 前两天折腾 Qinling 的 devstack,因为 Qinling 默认会对 k8s 有依赖,所以要在 devstack 的安装过程中安装 k8s。最初的脚本是从 openstack-helm 项目偷过来的,当时版本还是1.7,而 Qinling 升级了 kubernetes python client 之后发现不兼容1.7,于是开始折腾 k8s 的安装。期间我几乎尝试了世面上能找到的开源的安装 k8s 的工具,但发现跟 devstack 配合时都或多或少有一些限制(或者说麻烦),最后又不得不回到 openstack-helm 的 k 继续阅读 »
2015-11-29 刘太华
一次rabbitmq没用好的资源泄露 最近重写的一个使用rabbitmq做borker的服务, 一个go-lang的小服务,支持多节点,很简单就是从mq获得msg, 如果有通过websocket连接上来的client, 那么就push给它。 继续阅读 »
2016-12-16 Li Shuai
1. 连接数过高 Redis连接数过高,且没有修改进程能打开的最大文件数,当达到最大文件数限制时,Redis在accept新连接的时候会立即报错"Max open files",无法成功获取该连接,此时,listen socket是持续可读的状态,事件循环直接把CPU跑满。这种现象还可能与没有配置Redis配置文件中的timeout参数有关,不设timeout参数,Redis不会主动关闭僵尸连接,导致连接数越来越高,容易达到限制。 解决方法:1)config set timeout xx修改keeplive时间;2)client kill ip:port杀死一部分僵尸连接;3)修改系统参数,增加单进程能打开的最大文件数。 这一点M 继续阅读 »
2018-04-29 Lingxian Kong
什么是 TLS termination 关于 TLS termination 的具体实现原理可以自行 google,我自己也讲不清楚。但简单地说,TLS termination 通常用于负载均衡器中对 https 协议的处理。为什么要单单为 https 做处理呢?https相比与http多了安全支持,其中最关键的步骤就是建立server和client的SSL安全连接通道。HTTP使用 TCP 三次握手建立连接,客户端和服务器需要交换3个包,HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的9个包,所以一共是12个包。网上有人对 HTTP 建立连接做过测试,在该测试中是114毫秒;而HTTPS建立连接,需要耗费436毫秒 继续阅读 »