使用 Docker 和 Nginx 打造高性能的二维码服务 本文将演示如何使用 Docker 完整打造一个基于 Nginx 的高性能二维码服务,以及对整个服务镜像进行优化的方法.如果你的网络状况良好,完整操作和体验时间应不超过 15 分钟. 动手前的脑洞 最近有一个小需求,需要在页面中快速生成一些二维码. 说到生成二维码,方法很多,比如按照 QRCode 算法进行计算之后: 使用各种服务端语言,然后调用 GD 绘图库在语言中的 API 进行绘制,并生成图片,然后配合能够提供 HTTP 服务的软件…
前言 本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降.好吧,现在回归传统方式:前端ajax每隔1秒或2秒发一次请求,去查询后端的登录状态. 一.支付宝和微信的实现方式 1.支付宝的实现方式 每隔1秒会发起一次http请求,调用https://securitycore.alipay.com/barcode/barcodeProcessStatus.json?securityId=web%7Cauthcen…
 前言 基于之前两篇(<spring boot高性能实现二维码扫码登录(上)——单服务器版>和<spring boot高性能实现二维码扫码登录(中)——Redis版>)的基础,我们使用消息队列的订阅与发布来实现二维码扫码登录的效果. 一.实现原理 1.参考微信的二维码登录机制 首先,请求后端拿到二维码.然后通过http长连接请求后端,并获取登录认证信息.这时,当二维码被扫,则记录seesion并跳转至内部页面. 如果没有扫码二维码,则线程会等到30秒(也有的说是20秒),如果再此期…
用lua nginx module搭建一个二维码(qr code)生成器 作者 vinoca 發布於 2014年10月31日 如果有VPS,或者开源的路由器,安装一个nginx,添加lua-nginx-module,再编译安装qrencode for lua ,用下面的lua代码,访问http://youip/qr?t=hello就可以看到效果啦: local qr = require "qrencode" local args = ngx.req.get_uri_args() ngx…
前言 目前网页的主流登录方式是通过手机扫码二维码登录.我看了网上很多关于扫码登录博客后,发现基本思路大致是:打开网页,生成uuid,然后长连接请求后端并等待登录认证相应结果,而后端每个几百毫秒会循环查询数据库或redis,当查询到登录信息后则响应长连接的请求. 然而,如果是小型应用则没问题,如果用户量,并发大则会出现非常严重的性能瓶颈.而问题的关键是使用了循环查询数据库或redis的方案.假设要优化这个方案可以使用java多线程的同步集合+CountDownLatch来解决. 一.环境 1.ja…
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroid/qrcode: composer require endroid/qrcode 2 将二维码生成封装为服务 位置: /appliction/common/services/QrcodeService.php 3 QrcodeServer.php 代码如下 <?php /** * 二维码服务 *…
最近有一个需求,在现有生产系统上的人员库中增加一个此人员关键信息的二维码,支持文字版和跳转版两种方式,与报表工具关联,可打印.以windows服务方式,定时检查,只要发现某人员没有此二维码信息,就生成并写入人员库. 决定使用Python. 在此之前,没有用Python实现过其中的任何一个工作.对于习惯于微软开发环境下的程序员,使用开源系统,几乎一步一个坎,不过确实挺简单的. 整体设想,主要工作有以下几个步骤: 1.生成二维码 2.建立连接,读取数据 3.根据读取的数据生成二维码 4.二维码写入数…
tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控 1.zbar识别二维码程序,python2.6.6 #!/usr/bin/env python # coding: u8 import os import zbar import Image import urllib import uuid import requests import sys import tornado.httpserver import tornado.ioloop impor…
最近因业务需求需要在程序中实现二维码图片生成,于是就用到QRCoder开发库.最终在windows环境下部署运行没问题,但切换到docker(centos7.0)后发现是有问题的. 错误信息提示:The type initializer for 'Gdip' threw an exception. Unable to load shared library 'libdl' or one of its dependencies. 如下图所示: 通过报错分析,docker容器缺少libdl文件导致报…
将apk文件置于nginx目录下 <!--进入nginx安装路径--> /usr/local/nginx <!--新建放apk的目录--> mkdir -p resources/app/ <!--将apk上传到新建目录下--> rz 最终,app下面有两个apk文件:gl_android.apk.zh_android.apk,如下图可以查看: 修改配置文件 <!--进入配置文件编辑模式--> vim conf/nginx.conf <!--添加--&g…