分布式环境下,由于系统不再是单点,一个业务可能会有多个系统参与执行。这就涉及到请求在多个系统之间来回转发,
如果没有一个全局的标识能够追踪单个业务调用,那么就会在发生业务故障时盲目查日志,造成问题定位困难。
如果我们能在系统间透明的传递一个全局唯一ID,将请求在分布式系统中的流转路径聚合并在使用中保存和传递该id,最后
通过页面进行可视化的展示,让开发、运维等人员能够轻松的发现系统故障,那么对问题的快速定位,系统的快速恢复有着
非凡的意义。

本文我们就根据谷歌的dapper论文的模型,自己开发一个最简的分布式链路追踪框架。工程上传至github,可以自行下载研究。
地址

源码地址

首先罗列下需求。

需求说明

  1. 基于HTTP同步调用,能实现TraceId的传递,SpanId的生成及传递,ParentSpanId的获取。
  2. 应用层无感知,业务请求无需显示传递链路信息。
  3. 支持Spring框架

Read More

跨域请求过程中,出现一个请求发送两次的现象,第一次是以OPTION方法发送的,第二次才是真正的请求。

这种现象着实令人好奇,因此将代码执行过程及分析记录下来。

Read More

你说你变了,你说我变了。

我说你没变,我说我没变。

变化是在发生着,从年少轻狂,肆意妄为,变得老成,变得踏实,亦或是现实。

我庆幸,我们还在一起,依旧携手,依旧是这双人,但感觉已经不同以往。

你说你更愿意相信现在的我,我说谢谢你一直以来的陪伴。谢谢你包容曾经飘零的心。

还有很多话想说啊,宝贝。

宝贝,一直都这么称呼你,但现在只觉得荣幸,是你授予了我爱你的权力。没有你的陪伴,我终究是流浪者。

Read More

Nginx作为一款高性能的web服务器在互联网中得到了广泛应用,是运维必须掌握的技能之一。作为研发,偶尔也需要进行测试环境的搭建,因此研发也应当了解Nginx的搭建过程和机理,这样更能开阔眼界,毕竟技多不压身嘛。

本文就主要介绍如何利用Nginx搭建反向代理服务并开启HTTPS支持。

Read More

第1步 – 提高JVM栈内存Increase JVM heap memory

你使用过tomcat的话,简单的说就是“内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置TOmcat的配置文件(Windows 下的catalina.bat或Linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说,JVM通常不去调用垃圾回收器,所以服务器可以更多关注处理web请求,并要求尽快完成。要更改文件(catalina.sh) 位于”\tomcat server folder\bin\catalina.sh”,下面,给出这个文件的配置信息,

Read More

建议大家在下面的规范指导下对docker进行操作,以保证服务的稳定性.

1、环境变量命名必须匹配c标准,matching regex [A-Za-z][A-Za-z0-9]* ,建议环境变量统一使用大写字母。

2、测试到生产应使用同一镜像。

3、容器应无状态完全自理,容器间不应有启动顺序要求(应用有需求的,请容器内自行构建重试等待机制),容器启动后的所有初始化操作需要在容器内部完成,启动后使用kuberctl exec,doker cp,docker exec等操作进行容器初始化配置是不可取和不被允许的。

Read More

本文转载自:Java架构师之路

本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。

一、键值设计

1.key名设计

  • (1)【建议】: 可读性和可管理性

    以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id

    ugc:video:1
    
  • (2)【建议】: 简洁性

    保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:

    user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}
    

Read More

什么是跨域?

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

Read More

Fork me on GitHub