执子之手

与子偕老


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索
close

在Tomcat中使用ThreadLocal以及Session

时间: 2017-05-04   |   分类: 开发     |   评论:  0    |   访问: 0

最近运营同事在管理平台(生产环境)上碰到一个问题:登录之后会莫名其妙地变成未登录状态,被踢回登录页面。

管理平台使用的Spring MVC框架实现的后台接口,React实现的前台页面。之前引入React的时候已经做过前后端分离。但是当时考虑到技术栈的原因,没有对登录体系进行彻底改造,没有引入AccessToken来维护登录状态,依然保留了Java的Session机制。考虑到管理平台属于内部使用,访问量不大,因此直接在Nginx层使用iphash进行了Session粘滞,确保同一个用户的请求总是被同一个的后台Tomcat处理,这样就可以使用传统的session机制保持用户登录状态。

阅读全文 »

Java SSL握手记录分析

时间: 2017-04-28   |   分类: 开发     |   评论:  0    |   访问: 0

公司项目当中经常使用CXF库连接WebService服务,而且我们自己提供的服务也是基于CXF的SOAP服务,经常需要指导客户怎么连接我们的服务。CXF库整个体系架构比较庞大,相关的类、知识点都比较多。尤其是连接SSL双向认证服务的时候,经常碰到问题。

使用双向SSL认证的时候,在Spring中配置起来非常简单,但是一旦出错就比较难找问题。经过多次尝试,最后发现还是分析SSL握手记录比较靠谱,比较容易找出真正的问题所在。特此记录一下自己的一些心得,以作备忘并希望能够帮到其他人。

阅读全文 »

通过Zabbix监控业务数据(续)

时间: 2017-04-20   |   分类: 运维     |   评论:  0    |   访问: 0

昨天配置好报警条件之后,今天早上检查发现昨天晚上发出了报警。但是看上去像是误报。 在凌晨2:44:02触发了警报,然后在2:44:32警报解除,持续时间30秒。如下两图:

从感觉上像是误报。

阅读全文 »

通过Zabbix监控业务数据

时间: 2017-04-19   |   分类: 运维     |   评论:  0    |   访问: 0

为了事后分析服务质量,我们的云认证系统将商户访问记录保存到了数据库中(MySQL)。在日志中我们记录了商户每次访问的返回结果,耗费时间等信息。通过这些信息我们可以分析发现服务什么时候性能比较低,什么时候处理效果比较差。

之前通过写脚本,每小时对这些信息进行一次统计,并根据情况(如错误比例过高等)发送邮件通知给相关人员。但是这存在两个问题:

  • 响应不及时:因为一小时才统计一次,所以滞后效应太明显,经常问题已经发生很久报警才发送出来;
  • 报警条件更新不方便:报警条件只能通过脚本编写人员实现,修改起来不方便。

鉴于此,一直想对这个报警体系进行改造,最后选择通过Zabbix实现这个功能。

阅读全文 »

在Linode节点上开启BBR算法

时间: 2017-04-17   |   分类: 翻墙     |   评论:  0    |   访问: 0

BBR是Google开源的TCP拥堵控制算法,与2016年9月开源。BBR的目的是要尽量跑满带宽, 并且尽量不要有排队的情况, 其使用效果并不比速锐差。

Linux kernel 4.9+ 已支持 tcp_bbr。我在Linode安装了4.10.10内核,可以开启BBR。但是Linode自带的4.9无法开启。

阅读全文 »

在VSCode中为Vue.js开发启用静态类型检查Flow

时间: 2017-04-11   |   分类: 开发     |   评论:  0    |   访问: 0

众所周知,Javascript是一种弱类型(或者称为动态类型)语言,即变量的类型是不确定的。例如,下面代码中的temp一开始是字符串,后来又变成了数字:

1temp = 'hello';
2temp = 5;

弱类型语言变量类型完全由当时的值决定,所以称为“弱类型”。这样设计有其好处,可以写出非常简洁的代码。但是在构建大型项目的时候,无法在编译期发现问题会导致很难发现问题,反而会为程序员带来非常大的负担。这实际上限制了JS项目的规模,无法开发过于复杂的项目。

阅读全文 »

Node.js 使用Redis发布订阅模式

时间: 2017-03-30   |   分类: 开发     |   评论:  0    |   访问: 0

1. 背景

最近在用Node.js做一个管理系统的时候碰到了一个场景:为了访问性能,系统在内存中(不是Redis)缓存了一些常用数据,例如系统菜单树之类的。但是什么时候刷新这些缓存就成了问题。当然在单服务器模式下也不是大问题,只要在更新数据的时候删除内存中的缓存数据即可。但是这一方法在分布式服务中就无效了:同时会有多个这种系统在跑,但是只有一台服务器接到了处理请求,其他服务器根本没有办法刷新内存中的数据。 当然有人会说将缓存放到Redis中不就解决问题了?但是如果数据量稍大一些,而且访问频繁、更新却不频繁,放到Redis中每次访问都会对Redis带来不小的压力,显得很没有必要。 这种情况下,自然就可以使用Redis的发布订阅机制来解决问题了:当数据更新之后,只要发布一个消息到Redis,所有服务器都可以收到消息,执行刷新缓存的操作了。

阅读全文 »

Docker for Mac磁盘性能低下的解决办法

时间: 2017-03-29   |   分类: 运维     |   评论:  0    |   访问: 0

最近备份恢复Gogs的时候,发现同样的配置参数在Mac上访问Gogs的用户首页特别慢,大概耗时8秒,而在Linux上面运行的时候不到1秒钟。后来就上网搜索,加上自己试验,最后找到了原因应该是Gogs镜像本身的问题(可能是采用了alpine这一内核,但是具体原因不详,有待进一步实验)。

这个过程中曾经怀疑是Docker运行MySQL过慢的原因,虽然最终发现不是,但是搜索过程中发现了Docker for Mac确实有性能问题,那就是对大量磁盘IO的操作性能会非常差,大概会差10倍。

阅读全文 »

Electron开发使用Vue Devtools

时间: 2017-03-29   |   分类: 开发     |   评论:  0    |   访问: 0

最近在用Electron + Vue.js 2.0写一个桌面工具。使用下来感觉Electron用起来还是挺爽的。之前为了开发跨平台的桌面应用,我曾经用过Python+wxPython,Swing,SWT等各种技术,但是都有这样那样的问题(例如打包比较麻烦、界面各平台不太一致等)。而Electron基于目前成熟的前端技术,通过内嵌的浏览器内核实现了统一的表现形式,这一点用于做跨平台开发真是太方便了。

阅读全文 »

在Ubuntu 14.04上安装Docker 17.03.0-ce

时间: 2017-03-28   |   分类: 运维     |   评论:  0    |   访问: 0

0. 概述

Docker在1.13.x版本之后更新了版本号规则,区分了社区版和企业版。这导致了安装方式有所变化。所以特意参考官方的帮助重新整理了一下安装步骤。

适应范围:Ubuntu 14.04。安装版本:17.03.0-ce(社区版)。

阅读全文 »
1 2 3 4 5 6 7 8
Orchidflower

Orchidflower

Do one thing at a time, and do well.

77 日志
6 分类
84 标签
RSS 订阅
GitHub 知乎 OSC 豆瓣
© 2009 - 2024 执子之手
Powered by - Hugo v0.113.0
Theme by - NexT
ICP - 鲁ICP备17006463号-1
0%