随笔分类 -  十八般武艺

各种技术的研究、学习和实战,例如开源框架、技术中间件、开发语言等
摘要: 什么是时序索引? 其主要特点体现在两个方面, 一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通常要记录的操作日志、用户行为日志、或股市行情数据、服务器CPU、内存、网络的使用率等; 二取,一定是以时间范围为第一过滤条件,然后是其它查询条件,比如近一天、一周、本月等等,然后在这个范围内进行二次过滤,比如性别或地域等,查询结果中比较关注的是每条数据和timestamp字段具体发生的时间点,而非id。 此类数据一般用于OLAP、监控分析等场景。 阅读全文
posted @ 2019-03-19 15:19 土豆的奥特之父 阅读(4073) 评论(3) 推荐(2)
摘要:结合上文,我们的服务已经可以正常运行了,但它的访问方式只能通过服务器IP加上端口来访问,如何通过域名的方式来访问到我们服务,本来想使用Kubernetes的Ingress来做,折腾一天感觉比较麻烦,Ingress还得搭配Nginx使用,而且目前还是Beta版,就打算另辟蹊径,想到了之前用的Haproxy。 本文就结合OpenStack的负载和Haproxy来实现通过域名的方式访问K8s内部要发布的服务,用到的组件有OpenStack的负载均衡和Haproxy。 OpenStack负载配置到所有的K8s云主机上的一个端口,这个端口由Haproxy的K8s Service来监听,有请求过来时Haproxy根据不同的域名转发到对应的H8s Servie的Cluster IP。 阅读全文
posted @ 2016-11-23 12:52 土豆的奥特之父 阅读(2908) 评论(3) 推荐(5)
摘要:重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合。  在选型一文中说到我们选定的RPC框架是Apache Thrift,它的用法是在Main方法中重启服务,在Client端连接服务去调用, 而我的想法是要跟Dubblo、HSF的用法一样,因为很多人都熟习这两个框架的用法,特别是我们好几个项目都是基于EDAS开发的,而且世面上用Dubbo的公司也很多。 阅读全文
posted @ 2016-11-22 17:14 土豆的奥特之父 阅读(7983) 评论(2) 推荐(9)
摘要:经过几番折腾终于搞定Kubernetes了,我们要在Openstack上部署Kubernetes集群,使用最新工具Kubeadm来安装,由于不能直接访问Kubernetes的源,我们需要一台可以穿墙的机器,可以是个人电脑,另外需要一台基于Docker快照的云主机,将下载后的所有资源放到这台机器中生成新的Kubernetes快照,用来做为以后Kubernetes集群的系统基础。 阅读全文
posted @ 2016-11-21 13:38 土豆的奥特之父 阅读(1619) 评论(2) 推荐(2)
摘要:我们采用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。 阅读全文
posted @ 2016-11-18 13:05 土豆的奥特之父 阅读(1751) 评论(0) 推荐(1)
摘要:最早接触的是阿里的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 阅读全文
posted @ 2016-11-15 13:45 土豆的奥特之父 阅读(1814) 评论(4) 推荐(3)
摘要:近两年微服务在网上聊的如此的如火如荼,备受关注,我在去年下半年的一个项目中也用到了阿里云的EDAS、HSF,深有体会,最近时间空闲出于好奇,决定一探究竟打算自建微服务平台,基本实现EDAS、HSF的功能。也就索性来个微服务的从0到1,将自己对微服务架构的探索和实践记录下来并与大家分享! 万丈高楼平地起,我们先说基础设施以及选型! 所谓基础设施就是CPU、内存、硬盘、网络等资源,提到这些的原因就是我们不打算使用真实的硬件而是使用虚拟化的硬件设备,这么说大家可能会想到IAAS平台,其实没错,这些就是IAAS的核心功能,而我们的微服务也正是要考虑基于IAAS建立那就是--Openstack! Openstack可以对 主机、存储、网络、负载 等资源非常灵活的调整和分配,这使得我们在之后的实践中省时省力、如鱼得水! 阅读全文
posted @ 2016-11-10 15:20 土豆的奥特之父 阅读(1303) 评论(5) 推荐(2)
摘要:在国内docker-hub是肯定用不了的,不解释:sweat:。 所以最好还是建一个私有的docker-registry,存储一些常用的images方便随时pull。 相关链接 github:https://github.com/dotcloud/docker-registry api:http:/ 阅读全文
posted @ 2014-07-07 11:31 土豆的奥特之父 阅读(9975) 评论(0) 推荐(2)
摘要:首先大概解释一下Chef Chef有三个重要的概念:(如上图所示) 它们的合作关系大致是这样的, Workstation把资源或者说是一些要被运行的命令上传到Chef-Server上, Nodes自动通过Chef-Server拿到属于自己的执行任务到本地执行,这样可达到一个将军指挥千军万马的效果:s 阅读全文
posted @ 2014-06-13 10:29 土豆的奥特之父 阅读(4373) 评论(0) 推荐(1)
摘要:Gradle支持TestNG test { useTestNG(){ //指定testng配置文件 suites(file('src/test/resources/testng.xml')) } } 阅读全文
posted @ 2013-09-04 09:41 土豆的奥特之父 阅读(3671) 评论(0) 推荐(0)
摘要:一些比较重要的日志信息需要经常查看,比如用户行为日志,报错或关键业务日志数据然而同一系统多结点运行时这个工作会变的非常繁琐。 本例借用Logback日志框架和Hbase数据库来解决这一问题。 主要功能: 所有结点日志数据可通过配置同步到一个Hbase数据库 与Spring整合,全局共享一个Hbase操作实例,动态为某日志添加Appender 存储的日志数据可指定日志和日志级别,日志过滤 Key-Value方式存储,可指定Value的生成格式 Hbase的操作采用的是Spring-Hadoop中Hbase部分实现,没有直接引用Spring-Hadoop而是只提取Hbase实现部分,原因是Hbase只是其中很小一部分又不想自己封装,因此直接提取使用,封装功能包括Hbase配置和HbaseTemplate等,相关源码请参考Spring-Data-Hadoop下Hbase部分! 阅读全文
posted @ 2013-09-03 16:13 土豆的奥特之父 阅读(4815) 评论(0) 推荐(0)
摘要:Mockito,测试框架,语法简单,功能强大! 静态、私有、构造等方法测试需要配合PowerMock,PowerMock有Mockito和EasyMock两个版本,语法相同,本文只介绍Mockito. 阅读全文
posted @ 2013-08-16 13:18 土豆的奥特之父 阅读(3286) 评论(0) 推荐(0)
摘要: 上篇【Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理】,解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁访问储存容器,Shiro提供了三个缓存机制: 用户登录Session缓存,默认是不开启的,在Realm配置中设置authenticationCachingEnabled开启, 使用原则是用户在登录成功后缓存登录校验信息,如 admin 登录成功后将用户名密码等缓存,在超时退出或直接关闭浏览器需要重新登录时不访问数据库。 在用户退出或超时自动清理缓存数据。 阅读全文
posted @ 2013-07-29 13:28 土豆的奥特之父 阅读(1325) 评论(0) 推荐(0)
摘要:如今的系统多不是孤军奋战,在多结点会话共享管理方面有着各自的解决办法,比如Session粘连,基于Web容器的各种处理等或者类似本文说的完全接管Web容器的Session管理,只是做法不尽相同。 而本文说的是Apache-Shiro+Zookeeper来解决多结点会话管理,Shiro一个优秀的权限框架,有着很好的扩展性,而Zookeeper更是让你激动不已的多功能分布式协调系统,在本例中就用它来做Shiro的会话持久容器! 在有过Shiro和Zookeeper开发后这一切都非常容易理解,实现过程如下: 用到的框架技术: Spring + Shiro + Zookeeper 阅读全文
posted @ 2013-07-23 22:10 土豆的奥特之父 阅读(2507) 评论(0) 推荐(0)
摘要:异常,异常 我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个! 产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息! 在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种, WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等。 SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉 互相没有依赖,每个都可单独使用! 阅读全文
posted @ 2013-06-30 13:41 土豆的奥特之父 阅读(16300) 评论(0) 推荐(2)
摘要:业务需求: 需求很简单,就是把多个系统的日志数据统一存储到Hbase数据库中,方便统一查看和监控。 解决思路: 写针对Hbase存储的Log4j Appender,有一个简单的日志储存策略,把Log4j的存储和Hbase的存储分开进行,当到达一定量的时候批量写入Hbase。 Log4j的日志暂时存到一个队列,启动一个计划任务定时检查是否到达指定的量级,到达后批量写入Hbase将队列清空。 带来一个问题是在Log4j最后一次的数据可能未达到量级程序关闭而丢失,所以如果日志非常重要的话请同时开启文件存储! 阅读全文
posted @ 2013-06-22 17:07 土豆的奥特之父 阅读(1805) 评论(0) 推荐(0)
摘要:IcoMoon图标字体 做B/S系统设计时需要大量的图标,一般的做法是用PS做图标文件,文本说的是字体,用SVG绘制图标. 其好处大家都很清楚,可以随意设置大小,颜色等,目前已经被很多大网站使用,如Github等,我就不多说了。 阅读全文
posted @ 2013-06-19 13:40 土豆的奥特之父 阅读(1091) 评论(0) 推荐(1)
摘要:一个典型的生产消费者模型,如下图: WEB点提交要处理的数据,注意是多结点的也就是多个生产者,数量可能比较大。在后台有个处理者也就是消费者,注意前后是分开的,生产者应用本身不做消费,而Curator提供的API好像默认是一起的,一个应用既是生产者又可以做消费。 阅读全文
posted @ 2013-06-15 20:22 土豆的奥特之父 阅读(3716) 评论(0) 推荐(1)
摘要:看过Zookeeper相关文档后都知道它可以实现分布式集群的配置管理,本文以一个简单的实例来演示它是如何实现的并工作的。 情景需要,一个web集群,需要通过zk来控制集群的日志输出级别,比如管理员需要在生产环境下查看一下DEBUG日志,他可以临时将集群的日志输出级别改为DEBUG,获取他想要的信息后还要将级别调回到INFO或者ERROR级别。 今天的主角是Curator-Framework,它的存在使得我们操作ZK变得简单有趣起来! 阅读全文
posted @ 2013-06-15 20:17 土豆的奥特之父 阅读(8543) 评论(2) 推荐(3)
摘要:Zookeeper 客户端框架 Curator-Framework 来自Netflix公司,现在归Apache,目前版本2.0.1!在使用ZK开发时会遇到让人头疼的几个问题,ZK连接管理、SESSION失效等一些异常问题的处理,Curator替我们解决了这些问题,通过对ZK连接状态的监控来做出相应的重连等操作,并触发事件!更好的地方是Curator对ZK的一些应用场景提供了非常好的实现,而且有很多扩充,这些都符合ZK使用规范。 阅读全文
posted @ 2013-06-15 11:06 土豆的奥特之父 阅读(3371) 评论(0) 推荐(0)