记一次系统故障的至始至终
如今,支付的引入是很多互联网产品都需要的。为了让用户用着更“舒心”,集成像支付宝、微信支付这样的第三方支付也就成了常有的事。今天就来看看微信支付,以微信公众号支付为例,关注几个实现中值得注意的地方。
最近静下心来阅读了一下 Sam Newman 的《微服务设计》(Building Microservices)一书,受到很多启发,还是称得上收获颇多。这里算是做一个读书笔记,因此大部分的内容来自于原书,对一些重点关注的点进行记录。以下主要围绕书中的最后一章,即总结,然后回归到一些具体的点上。
在 I/O 密集型的应用中,CPU 可能总是苦苦等待着 I/O 操作的完成。如果是一个提供 Web 的服务的话,也就意味着一个线程会因为 I/O 阻塞而无法快速的对其他请求进行响应。势必也造成一种资源浪费和效率低下。在这种时候,协程的价值就体现了出来。这里,我延续之前的 APNs 话题,从应用的角度去实实在在的体验一下协程。
如今,很多移动应用在做用户注册/登录的时候,为减少用户的交互成本,会考虑引入常用的第三方平台的开放登录授权来快速的将用户倒流到自己的平台中。在原来的第三方登录中,很多是采用基于 Web 的 Oauth 登录授权机制,在这种情况下,用户需要在 APP 弹出的网页中输入第三方平台的账号和密码进行登录,然后授权当前应用允许访问自己的账号。而现在更多的则采用的是所谓 SSO 授权机制,用户在点击第三方登录按钮后,应用会将用户引导至对应的第三方应用中,接下来只需点击授权按钮即可完成授权过程,大大增强了操作的便捷性和账号的安全性。但对于服务端开发者来说此时可能会发现,之前基于 Web 的 Oauth 登录授权会产生一个回调,服务器可以基于此来做授权验证。但在 SSO 这种机制下,回调会直接返回给应用本身而不经过服务器。这种时候应如何处理授权验证的问题呢?
Tornado 是一个非常有意思的 Web 框架,其异步特性在某些使用场景中非常具有优势。在 Web 应用中,查询数据库以动态获取信息是非常常见的需求。而查询数据库本身又可能是非常耗时的事情。本文分享在 Tornado 中异步操作 MySQL 的方法,包括利用 Tornado-MySQL 以及 Celery 异步队列,来减少其间的阻塞,提高系统整体效率。
对称加密是一种广泛使用的加密算法,具有算法公开、计算量小、加密速度快、加密效率高等众多特点。而其中的 AES 相较于其前辈 DES 更为的先进和安全,是对称加密算法中最流行的算法之一。本文对 AES 加密做一个简单的阐述,并结合微信公众平台开发中的实例关注其在 Python 中的应用。