随笔分类 - 最佳实践
业务场景结合,综合落地,最佳实践案例
摘要:
什么是时序索引?
其主要特点体现在两个方面,
一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通常要记录的操作日志、用户行为日志、或股市行情数据、服务器CPU、内存、网络的使用率等;
二取,一定是以时间范围为第一过滤条件,然后是其它查询条件,比如近一天、一周、本月等等,然后在这个范围内进行二次过滤,比如性别或地域等,查询结果中比较关注的是每条数据和timestamp字段具体发生的时间点,而非id。
此类数据一般用于OLAP、监控分析等场景。
阅读全文

摘要:服务上线就要顶的住压力、扛的住考验,不然挨说的还是我们这帮做事的兄弟,还记得上图这个场景吗
老办法是服务集群部署,但总归有个上限,之前跟阿里合作的时候他们有个弹性计算可以通过设置CPU的阀值来动态扩展和收缩计算能力,那时感觉很有逼格,至少在当时我们常规的做法很难做到,没想到时至今日有了Kubernetes我们能也扬眉吐气了,看我来给大家实实在在的秀一把。
阅读全文
摘要:结合上文,我们的服务已经可以正常运行了,但它的访问方式只能通过服务器IP加上端口来访问,如何通过域名的方式来访问到我们服务,本来想使用Kubernetes的Ingress来做,折腾一天感觉比较麻烦,Ingress还得搭配Nginx使用,而且目前还是Beta版,就打算另辟蹊径,想到了之前用的Haproxy。
本文就结合OpenStack的负载和Haproxy来实现通过域名的方式访问K8s内部要发布的服务,用到的组件有OpenStack的负载均衡和Haproxy。
OpenStack负载配置到所有的K8s云主机上的一个端口,这个端口由Haproxy的K8s Service来监听,有请求过来时Haproxy根据不同的域名转发到对应的H8s Servie的Cluster IP。
阅读全文
摘要:重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合。
在选型一文中说到我们选定的RPC框架是Apache Thrift,它的用法是在Main方法中重启服务,在Client端连接服务去调用,
而我的想法是要跟Dubblo、HSF的用法一样,因为很多人都熟习这两个框架的用法,特别是我们好几个项目都是基于EDAS开发的,而且世面上用Dubbo的公司也很多。
阅读全文
摘要:经过几番折腾终于搞定Kubernetes了,我们要在Openstack上部署Kubernetes集群,使用最新工具Kubeadm来安装,由于不能直接访问Kubernetes的源,我们需要一台可以穿墙的机器,可以是个人电脑,另外需要一台基于Docker快照的云主机,将下载后的所有资源放到这台机器中生成新的Kubernetes快照,用来做为以后Kubernetes集群的系统基础。
阅读全文
摘要:我们采用Vmware的Harbor做为直接使用Registry2的替代,号称是企业级的私有镜像仓库,Harbor支持中文而且功能全面,可以在线多项目管理Images包括搜索、删除等功能,最主要的是安装也特别简单,Harbor对于Registry2省去一些秘钥、证书的生成等繁杂的配置而且功能更强大。
项目主页https://github.com/vmware/harbor/ 安装同样非常简单,用Docker快照创建云主机,安装请参考官方安装指导和 docker-harbor安装
Harbor通过Docker Compose安装的,使用 docker-compose stop 和 docker-compose rm 可以停止和删除Harbor。
阅读全文
摘要:最早接触的是阿里的EDAS(HSF)的微服务实现,后来知道他们有开源的Dubbo,再后来发现同类的RPC框架有Thrift、Zeroc Ice、Google的gRpc等,随着深入了解发现大Spring也推出一个微服务开发框架叫Spring Cloud,这么多业界大佬都相继推出自家产品,看来微服务的前景大好!
这么多框架带来的问题了也是显而易见的,用谁,怎么用呢?
从大的格局上考虑,这么多特性都支持的并没有,比如Dubbo的服务发现要用Zookeeper等注册中心来实现,Spring Cloud也是需要安装很多组件来实现并且并不支持弹性和多语言,我本人是一个一切从简的人,不喜欢把事情搞的太复杂也不好维护,直到看到这篇文章 http://www.infoq.com/cn/articles/netflix-oss-spring-cloud-kubernetes ,对Kub
阅读全文
摘要:近两年微服务在网上聊的如此的如火如荼,备受关注,我在去年下半年的一个项目中也用到了阿里云的EDAS、HSF,深有体会,最近时间空闲出于好奇,决定一探究竟打算自建微服务平台,基本实现EDAS、HSF的功能。也就索性来个微服务的从0到1,将自己对微服务架构的探索和实践记录下来并与大家分享!
万丈高楼平地起,我们先说基础设施以及选型!
所谓基础设施就是CPU、内存、硬盘、网络等资源,提到这些的原因就是我们不打算使用真实的硬件而是使用虚拟化的硬件设备,这么说大家可能会想到IAAS平台,其实没错,这些就是IAAS的核心功能,而我们的微服务也正是要考虑基于IAAS建立那就是--Openstack!
Openstack可以对 主机、存储、网络、负载 等资源非常灵活的调整和分配,这使得我们在之后的实践中省时省力、如鱼得水!
阅读全文
摘要:一些比较重要的日志信息需要经常查看,比如用户行为日志,报错或关键业务日志数据然而同一系统多结点运行时这个工作会变的非常繁琐。
本例借用Logback日志框架和Hbase数据库来解决这一问题。
主要功能:
所有结点日志数据可通过配置同步到一个Hbase数据库
与Spring整合,全局共享一个Hbase操作实例,动态为某日志添加Appender
存储的日志数据可指定日志和日志级别,日志过滤
Key-Value方式存储,可指定Value的生成格式
Hbase的操作采用的是Spring-Hadoop中Hbase部分实现,没有直接引用Spring-Hadoop而是只提取Hbase实现部分,原因是Hbase只是其中很小一部分又不想自己封装,因此直接提取使用,封装功能包括Hbase配置和HbaseTemplate等,相关源码请参考Spring-Data-Hadoop下Hbase部分!
阅读全文
摘要:
上篇【Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理】,解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁访问储存容器,Shiro提供了三个缓存机制:
用户登录Session缓存,默认是不开启的,在Realm配置中设置authenticationCachingEnabled开启,
使用原则是用户在登录成功后缓存登录校验信息,如 admin 登录成功后将用户名密码等缓存,在超时退出或直接关闭浏览器需要重新登录时不访问数据库。
在用户退出或超时自动清理缓存数据。
阅读全文

摘要:
如今的系统多不是孤军奋战,在多结点会话共享管理方面有着各自的解决办法,比如Session粘连,基于Web容器的各种处理等或者类似本文说的完全接管Web容器的Session管理,只是做法不尽相同。
而本文说的是Apache-Shiro+Zookeeper来解决多结点会话管理,Shiro一个优秀的权限框架,有着很好的扩展性,而Zookeeper更是让你激动不已的多功能分布式协调系统,在本例中就用它来做Shiro的会话持久容器!
在有过Shiro和Zookeeper开发后这一切都非常容易理解,实现过程如下:
用到的框架技术:
Spring + Shiro + Zookeeper
阅读全文

摘要:
业务需求:
需求很简单,就是把多个系统的日志数据统一存储到Hbase数据库中,方便统一查看和监控。
解决思路:
写针对Hbase存储的Log4j Appender,有一个简单的日志储存策略,把Log4j的存储和Hbase的存储分开进行,当到达一定量的时候批量写入Hbase。
Log4j的日志暂时存到一个队列,启动一个计划任务定时检查是否到达指定的量级,到达后批量写入Hbase将队列清空。
带来一个问题是在Log4j最后一次的数据可能未达到量级程序关闭而丢失,所以如果日志非常重要的话请同时开启文件存储!
阅读全文

摘要:
做B/S系统设计时需要大量的图标,一般的做法是用PS做图标文件,文本说的是字体,用SVG绘制图标.
其好处大家都很清楚,可以随意设置大小,颜色等,目前已经被很多大网站使用,如Github等,我就不多说了。
阅读全文
