新特性解读-mysql-80-memcached-api-新特性

作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文关键字:memcached 一款优秀的缓存系统memcache 本身是一款分布式的高速缓存系统,以 key-value 的形式常驻内存,一般用来做网站或者数据库的缓存使用。特别是对以下场景非常适合用 memcache 来做缓存: 频繁访问的数据安全性要求比较低的数据更新比较频繁的小表(用户状态表、物品库存等)MySQL memcached apiMySQL 5.6 —— 开始支持MySQL 5.6 把 memcache 功能以插件形式集成到 MySQL 数据库中,称为 memcached api。这样一来,memcache 的数据以 InnoDB 关系表的形式同步于磁盘,解决了 memcache 的几个问题: 解决了 memcache 的数据持久化的问题;可以很方便的以 SQL 语句的形式直接访问 memcache 的数据;不需要单独安装 memcache,安装 MySQL 即可使用。MySQL 5.7 —— 深入优化MySQL 5.7 对 memcached api 做了深入优化,官方数据显示使用 memcached api,在只读的场景中,QPS 提升到 100W。 MySQL 8.0 —— 新增特性MySQL 8.0 发布后,又在功能上给 memcached api 增加了两个新特性。 批量获取 KEY相比原来一次只能读取一个 Key 来讲,减少了客户端与 MySQL 服务端的数据交互次数。 ...

July 6, 2020 · 4 min · jiezi

一个技术预案让老板当场喊出了奥利给

我还是那个前浪,很多朋友说看了我的故事后觉得有点励志,在大家都处于“中年危机”、“大龄程序员找不到出路”等各种焦虑的时候,我的故事像一碗鸡汤(这个说法莫名感觉很油腻,能不能换一个???) 其实我认为与其消极焦虑,不如发挥自身优势积极面对。自从公司新项目使用了云服务器之后,我就又开始了继续学习的道路。也正因为不断地学习,从最开始被实习生轻视,到后来的让老板赞赏,无疑是打了一个漂亮的翻身仗。(了解前情请戳:甩锅大会上,我是如何绝地求生的) 上次因为业务量的快速上涨,导致服务器请求量远远超出预估,好在华为云弹性云服务器想要变更规格还是非常方便的,4行代码完美解决问题。 但之后,我也在反思,作为一个资深技术人,我们就只能被动地响应需求,处理问题么?不,不应该这样。 相比起后浪们,我们的优势一方面是对技术原理的理解和实际经验的加持,另一方面,还应该能够通过对公司业务的理解甚至于对行业和商业环境的理解,提前准备一些技术方案。 顺着这个思路往下想,公司的新业务是一个内容社区,现在的日活已经突破了10万用户量级,但从后台数据看,用户增长速度明显有所下降,按照运营部门的套路,这个时候一般要提比较大的需求了。 这个需求会是什么呢?一方面,从业务角度来看,我们新业务的目标用户偏年轻化群体,并且以女性居多;另一方面,从行业角度来看,现在新媒体内容的承载形式已经从图文转变为视频和短视频。 那么,运营部门接下来会不会提出要做短视频了呢?如果做短视频,我应该先做点什么呢? 果不其然,在这周的例会上,运营部门提出,我们要通过发展短视频来进一步提升内容的多样性,从而达到提高用户停留时长与留存率的目的。 老板也点头表示赞同,我们研发老大显然事先没有准备,扭头看向了我,目光中的信任让我感动不已,加上之前我就已经预估到了这个需求,于是我代表研发团队发言: “我们研发部门已经预判到接下来项目的发展方向会是短视频,所以提前做了预案,例如从服务器的角度来说,由于短视频相比图文内容,对服务器的磁盘空间要求更大。 但我们的服务器部署在华为云弹性云服务器上,我们可以非常方便地将已有磁盘挂载给弹性云服务器,或调用创建云硬盘的接口创建新的磁盘,然后再挂载到弹性云服务器。 为了快速响应业务调整的需求,我们已经将服务器挂载磁盘的操作文档写好了。” 说着,我打开了提前准备好的文档《弹性云服务器挂载磁盘》: 步骤1:创建云硬盘。1、 创建云硬盘。 (1)接口相关信息 URI格式:POST /v2/{tenant_id}/volumes (2)请求示例 POST: https://_{endpoint}_/v2/74610f3a5ad941998e91f076297ecf27/volumes Body:{ "volume": { "name": "openapi_vol02", "availability_zone":"az_test_01", "description": "create for api test", "volume_type": "SATA", "size": 40 }} (3)响应示例 { "volume": { "status": "creating", "user_id": "f79791beca3c48159ac2553fff22e166", "attachments": [], "links": [ { "href": "https://xxx/v2/74610f3a5ad941998e91f076297ecf27/volumes/51f45e08-1d4f-44c6-a4a9-84a488e0e8d3", "rel": "self" }, { "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/volumes/51f45e08-1d4f-44c6-a4a9-84a488e0e8d3", "rel": "bookmark" } ], "availability_zone": "az_test_01", "bootable": "false", "encrypted": false, "created_at": "2018-05-16T11:19:33.992984", "description": "create for api test", "updated_at": null, "volume_type": "SATA", "name": "openapi_vol02", "replication_status": "disabled", "consistencygroup_id": null, "source_volid": null, "snapshot_id": null, "shareable": false, "multiattach": false, "metadata": { "__system__volume_name": "openapi_vol02" }, "id": "51f45e08-1d4f-44c6-a4a9-84a488e0e8d3", "size": 40 }} 2、 记录响应中“volume”的ID。 ...

July 2, 2020 · 1 min · jiezi

API测试之Postman使用全指南

PostmanPostman是一个可扩展的API开发和测试协同平台工具,可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。 Postman 工具有 Chrome 扩展和独立客户端,推荐安装独立客户端。 Postman 有个 workspace 的概念,workspace 分 personal 和 team 类型。Personal workspace 只能自己查看的 API,Team workspace 可添加成员和设置成员权限,成员之间可共同管理 API。 当然我个人使用一般是不登录的,因为登录之后会自动将你的测试历史数据保存到账户里,你可以登陆网页端进行查看。因为API的很多数据是很敏感的,有的含有Token,或者就是一些私密信息,虽然Postman自己也强调说这样很安全,不会私下窥探用户的信息之类的,但是呢还是至少做一点有效的防范吧,自己不上传,因为网络并没有绝对的安全。所以我每次测试之后会将数据(Case)保存在本地,下次使用或者换设备的情况下将数据拷贝过来又可以继续使用了。 下面正式开始介绍如何使用Postman吧。 为什么选择Postman?如今,Postman的开发者已超过1000万(来自官网),选择使用Postman的原因如下:简单易用 - 要使用Postman,你只需登录自己的账户,只要在电脑上安装了Postman应用程序,就可以方便地随时随地访问文件。使用集合 - Postman允许用户为他们的API调用创建集合。每个集合可以创建子文件夹和多个请求。这有助于组织测试结构。多人协作 - 可以导入或导出集合和环境,从而方便共享文件。直接使用链接还可以用于共享集合。创建环境 - 创建多个环境有助于减少测试重复(DEV/QA/STG/UAT/PROD),因为可以为不同的环境使用相同的集合。这是参数化发生的地方,将在后续介绍。创建测试 - 测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率。自动化测试 - 通过使用集合Runner或Newman,可以在多个迭代中运行测试,节省了重复测试的时间。调试 - Postman控制台有助于检查已检索到的数据,从而易于调试测试。持续集成——通过其支持持续集成的能力,可以维护开发实践。 如何下载安装Postman?Step 1) 官网主页:https://www.postman.com/downl..., 下载所需版本进行安装即可。Step2)安装完成之后会要求你必须登录才能使用,没有账号可以进行注册,注册是免费的。(也可使用Google账号,不过基本不能登录,你懂的) Step3)在Workspace选择你要使用的工具并点击“Save My Preferences”保存。Step4)你将看到启动后的页面如下 如何使用Postman?下图是Postman的工作区间,各个模块功能的介绍如下: 1、New,在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。2、Import,这用于导入集合或环境。有一些选项,例如从文件,文件夹导入,链接或粘贴原始文本。3、Runner,可以通过Collection Runner执行自动化测试。后续介绍。4、Open New,打开一个新的标签,Postman窗口或Runner窗口。5、My Workspace - 可以单独或以团队的形式创建新的工作区。6、Invite - 通过邀请团队成员在工作空间上进行协同工作。7、History - 所有秦秋的历史记录,这样可以很容易地跟踪你所做的操作。8、Collections - 通过创建集合来组织你的测试套件。每个集合可能有子文件夹和多个请求。请求或文件夹也可以被复制。9、Request tab - 这将显示您正在处理的请求的标题。默认对于没有标题的请求会显示“Untitled Request”。10、HTTP Request - 单击它将显示不同请求的下拉列表,例如 GET, POST, COPY, DELETE, etc. 在测试中,最常用的请求是GET和POST。11、Request URL - 也称为端点,显示API的URL。.12、Save - 如果对请求进行了更改,必须单击save,这样新更改才不会丢失或覆盖。13、Params - 在这里将编写请求所需的参数,比如Key - Value。14、Authorization - 为了访问api,需要适当的授权。它可以是Username、Password、Token等形式。15、Headers - 请求头信息16、Body - 请求体信息,一般在POST中才会使用到17、Pre-request Script - 请求之前 先执行脚本,使用设置环境的预请求脚本来确保在正确的环境中运行测试。 18、Tests - 这些脚本是在请求期间执行的。进行测试非常重要,因为它设置检查点来验证响应状态是否正常、检索的数据是否符合预期以及其他测试。19、Settings - 最新版本的有设置,一般用不到。 ...

June 29, 2020 · 2 min · jiezi

声网-Agora-赴美提价-IPO-申请已服务全球-20-万-开发者

从硅谷一个车库的几行代码开始,一群程序员创立了声网 Agora(上海兆言网络科技有限公司),期待用实时音视频互动 API 改变全世界人们的沟通方式。 美东时间 6 月 5 日,声网 Agora 向美国证券交易委员会(SEC)提交了首次公开募股(IPO)申请,计划在纳斯达克上市,代码为 API,募集至多 1 亿美元资金。 作为一家主营为云通讯的企业,声网受益于疫情下在线教育、音视频娱乐、远程办公的普及。局公开信息表示,2019 年全年声网的营收为 6400 万美元(约 4.5 亿元人民币)。而仅仅在 2020 年 Q1,营收就有 3600 万美元(约 2.5 亿元人民币)。 逾 20 亿 SDK 安装量,服务全球 20 万+开发者声网的实时音视频通讯能力是基于其软件定义实时网络(简称 SD-RTN)传输架构连接运营商的公网资源,并通过算法不断地降低延时、提升抗丢包率,为客户提供更好的音视频体验。 在实时音视频通讯能力之上,声网也提供上百种 API 接口,用多种产品和第三方插件,帮助客户在不同场景下提升体验丰富度,如游戏场景下的变声功能、直播和教育场景下的美颜、伴奏、连麦 PK、白板等多种道具功能等。 在声网的招股书中,还多次提到了身目标和定位是 RTE-PaaS(Real-Time Engagement Platform-as-a-Service),即实时互动 PaaS。在此之前,市场通常把声网和 Twilio 这类公司归为 CPaaS(Communication PaaS,通讯平台即服务)。 声网对自身定位更像是音视频通讯的平台,是 CPaaS 的一个垂直于领域。在招股书中,实时性音视频互动的巨大需求被反复提及,尤其是音视频在不同的场景中的应用。比起来,Twilio 对于通讯的定义似乎更为宽泛,包括电话、短信、视频和邮件等形式。 声网成立至今无全网事故,日均分钟数达到 8 亿。公司积累了为国内外许多巨头企业、流量平台服务的经验,在突增流量、高并发上有各种应急措施和紧急备案。在疫情期间,声网 Agora.io 公布了其日均实时音视频通话分钟数达到 15.6 亿。公司至今在全球200多个国家和地区拥有超过20亿的SDK安装量,服务了全球超20万开发者。 声网创始人赵斌:API 信徒 声网成立于 2013 年,由通讯行业的资深人士赵斌创立。赵斌先生此前是 WebEx 创始工程师之一、前 YY 语音 CTO。 ...

June 7, 2020 · 1 min · jiezi

分享-ApiPost如何使用测试校验

什么是测试校验?协作开发,版本升级,服务器升级,接口返回有可能因为一些bug,和我们预期结果不一致。为了便于开发&测试人员能够更快的发现bug,有利于整个产品质量以及进度的保证。我们推出测试校验功能。 如何使用测试校验?1. 定义测试用例2. 验证测试用例例: 接口返回: { "errcode": 0, "errstr": "success", "post": [], "get": [], "request": [], "put": "", "header": { "Host": "echo.apipost.cn", "Connection": "keep-alive", "Content-Length": "0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN", "Content-Type": "application/json", "Cookie": "PHPSESSID=n3k73k06o6ghnie4e9re4rbf0t", "Origin": "https://echo.apipost.cn", "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1" }}定义测试用例: apt.assert('response.raw.status==200');apt.assert('response.raw.type=="json"');apt.assert('response.json.errcode==0');apt.assert('response.raw.responseTime<100');apt.assert('response.json.header.Host=="echo.apipost.cn"');点击发送按钮后: 绿色表示测试通过,红色表示测试不通过。 ...

June 2, 2020 · 1 min · jiezi

小技巧使用ApiPost-下载响应数据到本地

ApiPost V3版本开始,已支持下载响应数据到本地,格式不限。如图中所示。

May 29, 2020 · 1 min · jiezi

搜集整理的一些免费API

参考作者开发的QQ机器人 - 这里的大部分API都用在这个机器人里了QQ群 - Javascript高级爬虫 - 作者自建群,欢迎加入!awesome-java-crawler - 作者收集的爬虫相关工具和资料一个帮你自动创建阿里云抢占式实例并开启网络加速的脚本 - 自动创建阿里云海外抢占式节点本机IP查询接口地址:http://cip.cc说明:需添加请求头User-Agent: curl 任意IP查询接口地址:http://cip.cc/<IP地址>说明:需添加请求头User-Agent: curl 手机号(段)归属地查询:接口地址:http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=<手机号或7位号段> HTTP请求解析接口地址:https://httpbin.org/get?show_env=1说明:此接口可以回显当前请求的请求头详细信息,可以用来测试代理的匿名性 随机毒鸡汤接口地址:https://nmsl.shadiao.app/api.php?level=min&lang=zh_cn说明:沙雕APP网站的AJAX请求,可以直接外部调用 随机彩虹屁接口地址:https://chp.shadiao.app/api.php说明:沙雕APP网站的AJAX请求,可以直接外部调用 随机语录项目地址:https://hitokoto.cn/说明:开源项目一言 Pixiv排行榜接口地址:https://api.imjad.cn/pixiv/v1/?type=rank&content=illust&mode=<排行榜类型>&per_page=20&page=1&date=<日期>说明: 用这个API可以获取P站插画排行榜,API说明在这里排行榜类型允许值:daily, weekly, monthly, rookie日期格式为YYYY-MM-DD,建议传入前天日期,否则可能发生403错误Pixiv主站在墙外,但是其CDN服务器i.pximg.net在墙内可以访问,另外可以用墙内的反向代理服务,比如pixiv.cat,pixivdl.net等Pixiv主站CDN服务器上的图片开启了反盗链,添加referer请求头即可正常下载随机涩图项目地址:https://api.lolicon.app/#/setu说明:作者君在P站上精心挑选的精品插画 语音合成接口地址:https://dds.dui.ai/runtime/v1/synthesize?voiceId=<发音人ID>&speed=<速度>&volume=100&audioType=mp3&text=<文本>说明: API文档和发音人列表见这里中文文本需要URL编码速度值为0.7~2,越大越慢谷歌翻译接口地址: https://translate.google.cn说明:墙内可访问 搜歌(网易)接口地址:https://music.sounm.com/?name=<关键字>&type=netease说明: 搜你妹引擎的AJAX接口,调用时需要传入以下请求头: Content-Type: application/x-www-form-urlencodedX-Requested-With XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36Referer: https://music.sounm.com/?name=<关键字>&type=netease本接口能够返回可下载的mp3链接

May 27, 2020 · 1 min · jiezi

分享ApiPost自动化测试基础之接口参数依赖的情景处理

ApiPost V3版本的参数依赖处理方式同旧版雷同。什么是接口参数依赖:接口参数依赖又称作接口依赖,简单点说就是后面的接口要用到前面的接口产生的数据。 比如:我们一个接口B需要A接口返回的参数token作为自己的请求参数。常见的场景如:访问一个需要登陆才能浏览的接口。 ApiPost如何处理参数依赖?为了便于演示,首先,我们准备2个接口: get_token接口:请求地址:{{url}}get_token.php 它将返回一个token参数。如图: need_token接口:请求地址:{{url}}need_token.php 它需要get_token接口返回的token参数作为自己的请求参数。 如上图所示,我们定义了一个环境变量token_var,由于此时尚未将其与get_token接口返回的token绑定,所以此时它原样输出了。 绑定get_token的响应结果token到环境变量token_var此时点击get_token接口的【后执行脚本】,通过一个变量赋值,就可以将get_token的响应结果token到环境变量token_var。 此时,点击【发送】按钮,就可以把get_token接口返回的token绑定到环境变量token_var了。 我们进入need_token的接口,并点击发送,就会看到token已经是我们刚才获取到的token了。 注意:我们绑定完成后,我们需要先再次发送请求下get_token接口(执行绑定数据),再请求need_token接口。 附:响应类型对应关系:response.raw:原始响应数据 调用示例: response.raw.status //响应状态码(200、301、404等) response.raw.responseTime //响应时间(毫秒) response.raw.type //响应类型(json等) response.raw.responseText //响应文本 response.json :json格式的响应数据 调用示例如上面示例: response.json.data.token //也可以 response.json.data["token"] response.headers :响应头 调用示例: response.headers.server //也可以 response.headers["server"] response.cookies :响应cookie 调用示例: response.cookies.PHPSESSION //也可以 response.cookies["PHPSESSION"]

May 26, 2020 · 1 min · jiezi