algernon 看到github 的介绍很很强大,一下子想到了openresty,功能看着很强大,支持 redis pg lua markdown quic http2 mysql 限速 pongo2 sass(scss) web 相关的 jsx (js dsl 模板写法) 说明 看官方介绍和很强大,有时间了运行下,代码也比较规整,可以学习下 参考资料 https://github.com/xyproto/algernon        …
Fastflow 是什么?用一句话来定义它:一个 基于golang协程.支持水平扩容的分布式高性能工作流框架. 它具有以下特点: 易用性:工作流模型基于 DAG 来定义,同时还提供开箱即用的 API,你可以随时通过 API 创建.运行.暂停工作流等,在开发新的原子能力时还提供了开箱即用的分布式锁功能 高性能:得益于 golang 的协程 与 channel 技术,fastflow 可以在单实例上并行执行数百.数千乃至数万个任务 可观测性:fastflow 基于 Prometheus 的 metr…
  article- @嘟嘟噜- May/26/2018 18:35:30 如何基于Golang设计一套微服务架构 微服务(Microservices),这个近几年我们经常听到.那么现在市面上的的微服务架构技术有很多,比如比较成熟的 Spring Boot.Spring Cloud 全家桶.如果在非 Java 体系里如何实现微服务架构呢? 经过几个月的折腾,我们就来聊聊Golang在微服务架构是如何实现? What are microservices? 微服务 —— 也称为微服务架构 —— 是一…
基于golang分布式爬虫系统的架构体系v1.0 一.什么是分布式系统 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统.简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样.分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务.计算机越多,CPU.内存.存储资源等也就越多,能够处理的并发访问量也就越大. 从分布式系统的概念中我们知道,各个主机之间通信和协调主要通…
Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器.其目的是为了替代 sshd.Teleport 可以轻松让团队以最佳实践来使用 SSH,例如: 无需分发密钥,Teleport 使用基于证书的访问并实现自动过期 增强了两阶段身份验证 集群支持,每个 Teleport 节点是集群的一部分,而且可通过 Web UI 浏览 可以记录和重放 SSH 会话,方便分享和审计 通过会话的共享来实现协作诊断问题 可通过 HT…
搜索业务是马蜂窝流量分发的重要入口.很多用户在使用马蜂窝时,都会有目的性地主动搜索与自己旅行需求相关的各种信息,衣食住行,事无巨细,从而做出最符合需求的旅行决策. 因此在马蜂窝,搜索业务交互的下游模块非常多,主要有目的地.POI.热门景点.美食.商场.酒店.问答.攻略.机票火车票等等,通过实时.精准地返回搜索结果,帮助用户做出个性化旅行决策. 面对越来越高的流量,马蜂窝技术团队积极尝试对搜索架构进行优化和升级,来保证搜索业务的稳定和性能. 方案背景 由于历史原因,优化前的搜索服务与下游模块交的互…
1个 影城行业 微信小程序(多商户.多平台版), 影业连锁 多商户.多平台版微信小程序.(基于多平台版,支持在业务上 可给 每个单独影城 分发定制单独的小程序版本) 资讯QQ: 876635409   (由于咨询用户太多,请备注:[影城 多平台版本]) 基于 多平台版本 架构,可以为每家影城/商户  分别定制 微信小程序. 实现微信小程序  多商户.多平台版本 的控制和分发.(一般要做到这种程度,其它公司至少需要4个月实现) 已经实现 影城行业 业务架构: 影城集团连锁.影城.影厅及座位.院线…
一.redis lua介绍 Redis 提供了非常丰富的指令集,但是用户依然不满足,希望可以自定义扩充若干指令来完成一些特定领域的问题.Redis 为这样的用户场景提供了 lua 脚本支持,用户可以向服务器发送 lua 脚本来执行自定义动作,获取脚本的响应数据.Redis 服务器会单线程原子性执行 lua 脚本,保证 lua 脚本在处理的过程中不会被任意其它请求打断. 二.高并发情况下减库存的实现思路 由于lua脚本是原子性同步执行的,也就是说,我们可以将一堆操作封装为一个操作,让redis当做…
原文:基于Django的Disqus如何支持每月80亿PV 本文由 伯乐在线 - 贱圣OMG 翻译.未经许可,禁止转载!英文出处:Matt Robenolt.欢迎加入翻译小组. 现在我们Disqus能够处理一个月80亿PV,每秒处理45000个请求.在把评论发送到很多不同的人的时候,我们学到了一些东西.众所周知Disqus是用Django来处理绝大部分的web流量.在使用任何web框架之时,都要在开发速度 vs 性能.快速上手 vs 定制等之间做取舍.而Disqus更趋向于快速开发和容易上手,同…
以前介绍过一个Flagr 的基于golang 的特性功能开发类库(技术雷达推荐),今天看到一个类似也很不错的方案flipt 参考架构 包含的特性 快速,使用golang 编写,同时进行了性能优化 运行以及配置简单 可以对于特定分段的用户配置分发规则 native grpc 支持 可以方便进行应用集成 提供了方便的rest api 提供了console 以及UI 可以方便进行debug 参考资料 https://flipt.dev/architecture/ https://github.com/…
一.什么是RPC 1.简介: RPC:Remote Procedure Call,远程过程调用.简单来说就是两个进程之间的数据交互. 正常服务端的接口服务是提供给用户端(在Web开发中就是浏览器)或者自身调用的,也就是本地过程调用. 和本地过程调用相对的就是:假如两个服务端不在一个进程内怎么进行数据交互?使用RPC. 尤其是现在微服务的大量实践,服务与服务之间的调用不可避免,RPC更显得尤为重要. 2.原理: 计算机的世界中不管使用哪种技术,核心都是对数据的操作.RPC不过是将数据的操作垮了一个…
概述 gofs是基于golang开发的一款开箱即用的跨平台文件同步工具,开源地址如下:https://github.com/no-src/gofs,欢迎点个Star或者提交Issue和PR,共同进步! 安装 首先需要确保已经安装了Go (版本必须是1.18+),然后你就可以使用下面的命令来安装gofs了 如果你不需要自行从源码编译安装,也可以直接下载最新发布的二进制文件 go install github.com/no-src/gofs/...@latest 在Docker中运行 如果你想要在d…
mac 下基于firebreath 开发多浏览器支持的浏览器插件 首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.firebreath.org firebreath 是一个夸平台,夸浏览器的,开发浏览器插件框架: 利用firebreath开发的浏览器插件,可以在多浏览器上安装:并且提供多种平台下的解决方案比如mac,windows 二. 关于mac 使用 firebreath 开发浏览器插件 官方教程 http://…
原理:php默认扩展库不含有redis扩展:要支持redis扩展,需要有redis.so这个扩展文件 所以我们的目标就是生成redis.so扩展文件,并修改php.ini 让其支持redis扩展. 准备测试环境与软件: Vm虚拟机: CentOS5.5(已搭建好LNMP环境): Redis-2.6.14 (安装方法,见我上一篇博文): phpredis.tar.gz  (没有的去网上下载): 我的主机电脑是win10 . 1.将phpredis.tar.gz 上传到Linux下,并解压 2.进入…
1.在Django框架下工作时间长了,会对Django的技术设施产生依赖,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #把manage.py所在目录添加到系统目录 os.environ['DJANGO_SETTINGS_MODULE'] = 'jcsbms.s…
本人在中间件研发组(主要开发RPC),近期遇到一个需求:RPC基于http协议通过netty支持文件上传下载 经过一系列的资料查找学习,终于实现了该功能 通过netty实现文件上传下载,主要在编解码时处理,具体的代码如下: ①文件上传 @Override public RPCRequest doDecodeRequest(FullHttpRequest request) { RPCRequest rpcRequest = new RPCRequest(); String biz_prefix =…
咏南中间件开始支持redis client接口调用 咏南中间件封装了redis client接口,可以支持REDIS了. 如下图,将数据集写入REDIS缓存,和从REDIS缓存获取数据: procedure TForm2.Button1Click(Sender: TObject); var lData: TRedisString; lCacheKey: string; lStream: TStringStream; begin lCacheKey := 'goods'; lStream := T…
Django框架很方便,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #把manage.py所在目录添加到系统目录 os.environ['DJANGO_SETTINGS_MODULE'] = '${project_name}.settings' #设置sett…
Django框架很方便,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #把manage.py所在目录添加到系统目录 os.environ['DJANGO_SETTINGS_MODULE'] = 'jcsbms.settings' #设置setting文件 dja…
函数 以下是文件地理数据库.shapefile.coverage 和其他基于文件的数据源所支持的函数的完整列表.个人地理数据库和 ArcSDE 地理数据库也支持这些函数,但这些数据源可能使用不同的语法或函数名.除了以下这些函数外,个人地理数据库和 ArcSDE 地理数据库还支持一些其他功能.有关详细信息,请参阅 DBMS 文档. 日期函数 功能 描述 CURRENT_DATE 返回当前日期. EXTRACT(extract_fieldFROM extract_source) 返回 extract…
https://github.com/gopherchina/conference/blob/master/2019/2.7%20花椒直播基于golang的中台技术实践%20-%20周洋.pdf 花椒直播基于golang的中台技术实践 - 周洋.pdf…
百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检索到400条数据,这样开发者就无法轻易的扒光收录的POI数据.作者基于 Golang 编写程序,完整获取百度地图POI数据. 百度地图WEB服务API基于HTTP/HTTPS协议,用户按照API文档要求的格式发送HTTP请求来获取POI数据,请求获取的数据格式可以为xml或json. 地点检索接口提…
大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一下APScheduler的重复执行问题.在更上一节,我们编写好了Redis的在线执行功能. 那这一节我们就得把它运用到前置条件里面来了. 成果展示 由于博主都是先编码,再写文.所以是能展示成果的,今日份变化如下: 支持了前置条件(REDIS类型) 思路 前置条件要想支持Redis,思路其实很简单,模…
需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储:为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步. 问题就来了:Sorted Set 怎么清理? -设计内存容量只允许放一周内最新的,太久了缓存意义不大,太浪费. -再者存在百万级/s群发请求,不允许写入时触发清理. 理想模型:如果使用磁盘则使用MyIsam堆表,数据按照顺序写入,再建立以uid为索引,删除却是完全顺序的.内存里面的话Hash 表 + RB 树两个维…
支持JSP和Servlet的Web服务器 1.Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选. 安装教程:https://www.cnblogs.com/yocichen/p/10478431.html 2.Resin 服务器 Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快.Res…
一.简介 1)分布式限流 如果是单实例项目,我们使用Guava这样的轻便又高性能的堆缓存来处理限流.但是当项目发展为多实例了以后呢?这时候我们就需要采用分布式限流的方式,分布式限流可以以redis + lua 或者 nignx + lua这样的组合来实现.. 分布式限流一般应用场景都是在业务上进行限流,所以本文不涉及niginx + lua,简单介绍redis + lua分布式限流的实现.如果是需要在接入层限流的话,应该直接采用nginx自带的连接数限流模块和请求限流模块. 2)redis re…
一.引言 Redis是高性能的key-value数据库,在很大程度克服了memcached这类key/value存储的不足,在部分场景下,是对关系数据库的良好补充.得益于超高性能和丰富的数据结构,Redis已成为当前架构设计中的首选key-value存储系统. 虽然Redis官网上提供了200多个命令,但做程序设计时还是避免不了为了实现一小步业务逻辑而多次调用Redis的情况. 以compare and set场景为例.如果使用Redis原生命令,需要从Redis中获取这个key,然后提取其中的…
space-cloud 是一个开源的类似hasura 的graphql 引擎,但是space-cloud 同时支持rest api,而且支持多数据库 基于golang 编写,功能看着很强大 参考图 功能特性 强大的crud 灵活的数据操作 实时api ,实时查询数据库 文件存储 支持文件上传下载(s3,云存储) 可扩展 事件驱动 可以触发webhook,以及serverless 函数 比较全的访问控制 可缩放,可以进行灵活的水平扩展(目前看到基于raft hasicorp 公司的框架) 参考工作…
Redis是完全开源免费的,用C语言编写的,遵循BSD协议,是一个高性能的(key-value)分布式内存数据库,基于内存运行,并支持持久化的NOSQL数据库,是当前最热门的NOSQL数据库之一,也被人们称为数据结构服务器. Redis与其他Key-value缓存产品(memcache)有以下三个特点: 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 2.Redis不仅仅支持简单的key-value类型的数据,同时,还提供list,set,zset…
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于虚拟线程 随着JDK19 GA版本的发布,虚拟线程(来自Project Loom)这一特性也闪亮登场,虚拟线程是 JDK 而并非OS 实现的轻量级线程(Lightweight Process,LWP),许多虚拟线程共享同一操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量(可以参考golang的协程) 虚拟线程方面的文章,如今已经有很多优秀博…