- 博客(38)
- 资源 (4)
- 收藏
- 关注
原创 APISIX2.0功能简介
APISIX 是一个云原生、高性能、可扩展的微服务 API 开源网关,基于OpenResty(Nginx+Lua)和etcd来实现,对比传统的API网关,具有动态路由和热插件加载的特点。系统本身自带前端,可以手动配置路由、负载均衡、限速限流、熔断、金丝雀发布、身份验证、可监控等插件,操作方便。可以使用Apache APISIX来处理传统的南北流量,以及服务之间的东西流量。它也可以用作k8s入口控制器。您可以将Apache APISIX用作处理所有业务数据的流量入口,包括动态路由,动态上游,动态证书,A
2020-11-13 17:27:54
4419
原创 APISIX 2.0 安装教程(新手入门)
一 APISIX RPM 包安装(CentOS 7):安装前需要安装相关依赖:OpenResty ,etcd。若已安装,可忽略。# install epel, `luarocks` need it.wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmsudo rpm -ivh epel-release-latest-7.noarch.rpm# install etcdwget https://g
2020-11-04 16:47:01
4503
1
原创 kong upstream支持ipv6
在开源网关kong下,若用户的upstream地址配置ipv6的域名,可能会出现httpDns(看各自使用的dns的场景而定)解析失败的情况。具体报错详情如下:2020/08/18 16:30:01 [error] 289375#0: *9273676 [lua] balancer.lua:781: execute(): [dns] dns client error: 101 empty record received. Tried: (short)www.neu6.edu.cn:(na) - cach
2020-08-20 15:11:27
1243
原创 线上个别机器访问公网地址时出现tcp请求超时或无响应处理方案
问题描述:线上环境有多个实例,分别在不同的机房。正常情况下没问题,但每当同机房下,添加新的实例服务器后,在这台新的实例上就会偶发出现请求超时或无响应的情况。并发量越大,出现的概率越高。ping正常。curl或正常http请求时,就会偶发出现该问题。故障定位首先,梳理网络流程。服务器在访问公网地址时,会经过nat网关转换到公网的地址,然后再去访问目标地址。其次,分别在服务器,nat服务器,目...
2020-05-06 14:31:55
1266
原创 OpenResty调用salasa20,xsalsa20,xsalsa20poly1305等算法
OpenResty调用salasa20,xsalsa20,xsalsa20poly1305等算法应项目需求,需要一套xsalsa20实现的加密算法。如果直接用lua实现一套,既浪费精力,又影响性能,总所周知直接使用LuaJIT的FFI方式,可直接调用c语言实现的函数。经过网上调研,可直接调用libsodium中内置的加密算法,具体c语言实现的开源代码链接如下:https://github.co...
2020-01-23 00:55:05
683
原创 java虚拟机中解释编译与即时编译的区别
我们知道要执行java代码需要编译器将其编译为字节码文件,再由jvm去翻译字节码文件。其实jvm(HotSpot为例)翻译字节码文件分为两种方式,一种是解释执行,另一种是即时编译(Just-in-Time compilation,JIT)。所谓解释执行就是边翻译为机器码边执行,而即时编译就是先将一个方法中的所有字节码全部编译成机器码之后再执行。前者的优势在于无需等待编译,而后者的优势在于执行...
2019-09-29 23:15:09
790
原创 openresty DNS解析失败name resolution failed解决方案
记一次线上问题,同一个域名,之前一直正常,在网络部门做完网络切割后,该域名偶尔会遇到status=503,message=“name resolution failed”,时间频率很奇怪,基本2分钟就会触发。而其余大部分都是正常200,错误信息如下图。 排查过程通过dig该域名,发现该域名与其他正常请求唯一的区别在于该域名做了2次CNAME。首先,由于看到有时间上的规律,开始只是调整了re...
2019-08-25 02:15:09
13811
1
原创 openresty读取环境变量
先说下使用场景,本想在初始化init阶段读取配置文件中设置的自定义变量。但由于在初始化阶段,配置文件还没有加载,所以目前想到的是将该变量加入到系统环境变量中,来实现该变量的配置。1.首先在环境变量中加入该变量:NGINX_ENV=test2.全局配置中定义envenv NGINX_ENV;3.代码中获取local env=os.getenv(“NGINX_ENV”)欢迎大家指正。...
2019-06-19 13:28:37
2707
原创 Linux查询谁在消耗IO
pidstat -dl 5(每5秒打一次)cat /proc/902/io (902为进程号)lsof -p 902 (902为进程号)
2019-06-10 00:07:18
790
原创 kafka入门读书笔记——消息引擎系统
顾名思义,系统A发送给消息引擎系统,系统B去消息引擎系统中读取系统A发送给B的消息。最基础的消息引擎就是做这点事的!其中两个重要的事实:消息引擎传输的对象是消息;如何传输消息属于消息引擎设计机制的一部分。既然消息引擎是用于在不同系统之间传输消息的,那么如何设计待传输消息的格式从来都是一等一的大事。试问一条消息如何做到信息表达业务语义而无歧义,同时它还要能最大限度地提供可重用性以及通用性?稍...
2019-06-09 02:12:03
371
原创 Mysql应急调优心得——杀敌一千自损八百
短连接问题顾名思义,短连接就是一个连接到数据库后,执行很少的 SQL 语句就断开,下次需要的时候再重连。如果使用的是短连接,在业务高峰期的时候,就可能出现连接数突然暴涨的情况。MySQL 建立连接的过程,成本是很高的。除了正常的网络连接三次握手外,还需要做登录权限判断和获得这个连接的数据读写权限。在数据库压力比较小的时候,这些额外的成本并不明显。但是,一旦数据库处理得慢一些,连接数就会暴涨。而一...
2019-06-02 22:15:34
362
原创 线上问题排查之HTTP状态码——415和406
话不多说,直入正题。首先我们看下HTTP状态码415和406,官方定义状态码含义415对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。406请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。 除非这是一个 HEAD 请求,否则该响应就应当返回一个包含可以让用户或者浏览器从中选择最合适的实体特性以及地址...
2019-04-29 00:17:48
3417
原创 Mysql中InooDB的Change Buffer
再提change Buffer之前,我们首先要说下是普通索引和唯一索引。一.二者区别顾名思义,不少人认为唯一索引的主要特点在于唯一,即在该索引字段上的值是不相同的。而今天我们来看看底层的实现原理及性能上的差异。1读的区别在读的过程中,二者在性能上的区别可以说是微乎其微。以如下语句为例: select id from t1 where a=9;对于普通索引来说,查找到满足条件...
2019-03-13 00:58:10
346
1
原创 MySQL的基本架构
MySql的基本架构示意图如下:一、MySQL总体上可分为Server层和存储引擎层。Server层包括连接器、查询器、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM...
2019-02-16 23:35:57
7112
原创 spring boot 返回大量acceptCharSet
问题描述,如下图所示: String requestBody = "{\"message\": \"I am very frustrated.\"}"; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); ArrayList<Chars...
2019-01-29 23:27:41
2076
1
原创 nginx虚目录里root和alias的区别
今天使用nginx搭建了一个网站,访问后出现404错误Not found. 上网查了一下原因,是由于nginx的配置不对。因为我是有两个web目录,这两个目录在不同的位置上。而且我不想把两个目录合并在一起,所以就要配置两个location。配置如下:server { listen 80 default_server; listen [::]:80 default_server i...
2019-01-27 21:55:09
240
原创 Linux调优之上下文切换
$ vmstat 5重点参数含义: cs(context switch)是每秒上下文切换的次数。 in(interrupt)则是每秒中断的次数。 r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。 b(Blocked)则是处于不可中断睡眠状态的进程数。 可以看到,这个例子中的上下文切换次数 cs 是 9892 次,而系统中断...
2019-01-26 20:56:57
1223
原创 module 'resty.uuid' not found:No LuaRocks module found for resty.uuid
kong启动时,遇到如下报错信息:执行如下命令,安装 lua-resty-uuid即可解决。luarocks install lua-resty-uuid执行代码,并启动成功:
2018-12-17 15:25:24
2455
原创 java 设置DNS缓存时间(成功时间和失败时间)代码
import java.lang.reflect.Field;import java.net.InetAddress;import java.net.UnknownHostException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.uti...
2018-12-16 01:48:52
1782
原创 java正则表达式匹配大括号里面的内容
其实主要是由于正则表达式在java语言中,需要考虑到字符转义的情况。代码如下: String regex = "\\{([^}]*)\\}"; Pattern pattern = Pattern.compile (regex); M...
2018-12-03 01:26:52
10987
原创 浅谈linux中平均负载LoadAverage
首先我们先来看下什么是系统负载。系统负载(SystemLoad)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)。
2018-11-27 00:26:33
679
原创 git for linux两种方法
最近需要在linux上跑项目,需要在linux上用到git。整理方法如下:一. 大家可通过下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/ 自行下载,或者直接在linux上下载,执行如下命令: # wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.t...
2018-11-20 00:19:31
1726
原创 将博客搬至优快云
hello dear friends. today I will move my blog to 优快云 . Thank you for your attention.
2018-11-05 23:46:00
79
原创 日志中获取request中请求参数(url参数和body参数)------post获取请求body(二)
/* @Bean public FilterRegistrationBean httpServletRequestReplacedRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new ...
2018-11-05 00:10:59
10773
1
原创 日志中获取request中请求参数(url参数和body参数)----get方式获取request请求参数(一)
在工作中我们有时会遇到需要在request中获取请求参数的场景。比如说用来记录追踪日志,排查问题等。一、当HTTP请求方式为get或delete时,有以下几种方式:1.获取url中所有参数request.getQueryString();2.获取指定某个参数:String value=request.getparameter(&amp;quot;key&amp;quot;);2.request.getParamete...
2018-11-02 01:28:51
13164
3
原创 读取json文件,并转换成jsonArray
读取json文件,并转换成jsonArraypublic static JSONArray ConvertToJsonArray(String path, String pathType){ JSONArray jsonArray =null; BufferedReader reader = null; StringBuilder jsonStr...
2018-10-22 23:41:22
4431
原创 Java 通过URL地址下载文本内容到本地文件中
Java 通过URL地址下载文本内容到本地文件中HTTP传输协议过程中,HTTP服务器在每个响应前面的首部中提供了大量信息,例如,下面一个Apache Web服务器返回的一个典型的HTTP首部:这里写图片描述 通过URL进行资源下载时,创立连接,使用getContentType()确定文本类别,比如只下载txt文件,我们将指定非Content-Type里面非text文件,抛出异常。然后通过get...
2018-10-22 23:41:03
6836
原创 如何解决-bash: jstack: command not found,Linux安装jstack
不少朋友在刚接触jvm的时候,通常在Linux中经常要使用jstack命令,新手经常会遇到如下问题: -bash: jstack: command not found 不用慌张,该命令位于Java/bin目录下,切换到该目录下执行,即可正常运行 ...
2017-12-08 15:19:00
9126
原创 JQuery 判断不同浏览器
if($.browser.msie) { //IE浏览器alert("this is msie"); } else if($.browser.safari) //safari浏览器{ alert("this is safari!"); } else if($.browser.mozilla) //火狐浏览器{ alert("this is mozilla!"...
2016-10-20 16:07:00
299
原创 在Java filter中调用service层方法
在项目中遇到一个问题,在 Filter中注入 Serivce失败,注入的service始终为null。如下所示: 1 public class WeiXinFilter implements Filter{ 2 3 @Autowired 4 private UsersServic...
2016-09-09 13:30:00
2113
原创 在easyui的treeGrid中添加checkbox(jquery)
jsp界面,也可用在aspx、html等前台界面中: 1 <script type="text/javascript"> 2 function show(checkid){ 3 var s = '#check_'+checkid; 4 //alert( $(s).att...
2016-08-30 13:20:00
495
原创 .vbs批量把ansi编码变成utf-8编码
on error resume nextSet WshShell=WScript.CreateObject("Shell.Application")dirPath=WshShell.BrowseForFolder(0, "请选择路径", 0, "").items().item().pathif right(dirPath,1)<>"\" then dirPath=dir...
2015-03-24 20:39:00
754
原创 new、virtual、override的区别与应用
这是网上很经典的一段程序: /// <summary> /// 父类 /// </summary> public class Father { public void Run0() { Console.WriteLine("Father.Run0...
2013-02-24 16:43:00
179
原创 C#中打印功能的实现
C#打印程序实现完整文档打印功能,我们会介绍打印操作具体包括的四个功能,打印所涉及的类的属性及方法,以及最终实现的样例。最后我们会总结C#打印程序的全部过程。 打印操作通常包括以下四个功能 1 打印设置 设置打印机的一些参数比如更改打印机驱动程序等 2 页面设置 设置页面大小纸张类型等 3 打印预览 类似于word中的打印预览 4 打印...
2013-02-20 15:52:00
432
原创 c#中类的访问修饰符
类内部同一程序集的派生类同一程序集的其他类不同程序集的派生类不同程序集的其他类priavtetrue protectedtruetrue true...
2013-02-19 23:02:00
170
原创 浅谈ref与out区别
今天又一次碰到了ref与out区别的问题,当初总认为自己学的还不错,但每次遇到后都要纠结一番,这次再次学习和巩固一下。MSDN中的定义:ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。 out 关键字会导致参数通过引用来传递。这与 ref 关...
2013-02-18 21:08:00
116
原创 Socket学习心得
最近才开始接触socket,分享一下学习心得,如果发现其中任何错误,欢迎高手们直接指出。 1.按惯例先来介绍下socket Windows 中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单 位),而这里这个描述符则是用于描述网络访问的。什么意思呢?就是程序员...
2013-02-17 21:46:00
1112
锋利的Jquery高清版+完整源码
2014-02-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人