架构设计
文章平均质量分 78
刚是程序员
https://www.linkedin.com/in/taogang/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据可视化中的视觉属性
Stephan Few 是数据可视化领域里面数一数二的专家,他的几本书《Show Me The Numbers》,《Information Dashboard Design》和《Now You See It》都是非常优秀的关于数据可视化的书。Stephan Few 和 Tableau 的合作非常紧密,在 Tableau 的数据可视化的设计中,处处可见 Stephan Few 的思想原创 2017-06-30 09:57:01 · 1705 阅读 · 0 评论 -
用Python实现一个大数据搜索引擎
搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。布隆过滤器 (Bloom Filter)第一步我们先要实现一个布隆过滤器。布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么原创 2017-11-28 09:10:37 · 839 阅读 · 0 评论 -
把代码执行演示嵌在你的PPT中
“Talk is cheap, show me your code!”当一个程序员在做技术分享的时候, 代码演示经常是不可或缺的一个环节。然而在你的演示PPT和代码运行之间切换是一件非常恼人事情,而且非常影响演示的节奏和流畅性。要做一个完美的技术分享,能不能把代码的运行嵌入到PPT中呢?当然可以,我前不久在公司内部分享了一起关于Python的小谜题,大家可以到斗鱼去观看这次分享的视频录播原创 2017-09-07 09:43:11 · 24780 阅读 · 1 评论 -
大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk
本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望能够大家在制定大数据搜索方案的时候有所帮助。简介ElasticSearch (1)(2)是一个基于Lucene的开源搜索服务。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发原创 2017-06-28 11:17:43 · 5266 阅读 · 0 评论 -
容器集群管理平台的比较
容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon上海一个微服务监控的Session,场面爆棚,我不得不在拥挤的过道听完了整个session。随着要管理的容器越来越多,容器的集群管理平台成为了刚需!Docker SwarmSwarm是Docker公司在2014年12月初新发布的容器集群管理工具。原创 2017-06-28 11:23:25 · 960 阅读 · 0 评论 -
使用开源软件快速搭建数据分析平台
最近,国内涌现出了不少数据分析平台产品,例如魔镜和数据观。这些产品的目标应该都是self service的BI,利用可视化提供数据探索的功能,并且加入机器学习和预测的功能。它们对标的产品应该是Tableau或者SAP Lumira。因为笔者曾经为Lumira开发数据可视化的功能,对这一块很感兴趣,于是就试用了一下这些产品,感觉这些产品似乎还有很大的差距,于是就想自己用开源软件搭一个简单的数据分原创 2017-06-29 10:34:33 · 4563 阅读 · 2 评论 -
大数据系统数据采集产品的架构分析
任何完整的大数据平台,一般包括以下的几个过程:数据采集数据存储数据处理数据展现(可视化,报表和监控)其中,数据采集是所有数据系统必不可少的,随着大数据越来越被重视,数据采集的挑战也变的尤为突出。这其中包括:数据源多种多样数据量大,变化快如何保证数据采集的可靠性的性能如何避免重复数据如何保证数据的质量原创 2017-06-29 10:36:20 · 616 阅读 · 0 评论 -
微服务中的模式和反模式
微服务中的常见设计模式软件开发者对“四人帮”的《设计模式》一书应该都很熟悉,微服务中也会有一些常见的模式:部署模式如何部署服务是微服务中的一个重要问题,微服务的部署方式非常灵活,有以下的不同选项可供选择 (参考 http://www.open-open.com/lib/view/open1462434484246.html)多服务共享主机/虚机单服务部署单一主机/虚机原创 2017-06-29 10:53:36 · 1431 阅读 · 0 评论 -
微服务部署方式的演进
Mutable Monster Server最早的巨石架构,应用本身包含状态,整个应用部署在物理节点上,要升级通常需要对整个应用升级,一般需要停止服务。并且这样的架构很难横向扩展。Immutable Server and Reverse Proxy过渡到微服务后,应用是不可变的服务部署在容器或虚机上,服务自身不包含状态,利用反向代理提供访问。这样的架构便于升级和横向扩展,当原创 2017-06-29 10:52:11 · 601 阅读 · 0 评论 -
持续交付的架构成熟度模型
随着云和容器技术的发展,大家对DevOps和CI/CD的重要性有了更深入的认识。今天我们就讨论一下架构设计如何更好的支持CI/CD。什么是持续集成,交付和部署(CI/CD)Martin Fowler 和 Kent Beck 首次提出 Continuous Integration (简称:CI),将之描述为:持续集成是一种软件开发实践:许多团队频繁地集成他们的工作,每位成员通常进行 日常集成原创 2017-06-29 10:54:29 · 4952 阅读 · 0 评论 -
使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )
笔者之前的博文提到过,随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题。今天我们就来看看如何使用Python,利用开源对分布式服务做协调。在对分布式的应用做协调的时候,主要会碰到以下的应用场景:业务发现(service discovery)找到分布式系统中存在那些可用的服务和节点原创 2017-06-29 17:04:53 · 820 阅读 · 0 评论 -
Python 并行分布式框架之 Celery
Celery (芹菜)是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。架构设计Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。消息中间件Celery本身不提供消息服务,但是可以方便的和第三方提供的消原创 2017-06-30 09:33:17 · 2393 阅读 · 0 评论 -
软件中的质量属性(二)
现在我们接着上一次的话题来看看其它的质量属性。互操作性 (Interoperability)互操作性指的是系统内或者系统之间不同的组件可以有效地进行信息交换,通常是以服务(Service)的形式来进行的。互操作性的关键因素包括通信协议,接口定义,数据格式的定义等等,而标准化是实现互操作性的重要手段。实现互操作性的主要挑战有以下这些方面:系统内部或者和已有的旧系统(legac原创 2017-06-30 09:46:41 · 5138 阅读 · 0 评论 -
使用Heapster和Splunk监控Kubernetes运行性能
Kubernetes已经成为容器编排的事实上的王者,连Docker都已经向K8s女王大人低头。对于Kubernetes的cluster的数据收集和监控已经成为IT运维的一个重要话题。我们今天来看一看如何利用Splunk最新的Metircs Store来对Kubernetes的集群进行性能监控。部署架构下图是该方案的部署架构,主要包括:利用Heapster收集K8s的性能数据,包含CPU,Memor原创 2018-01-18 03:31:01 · 1246 阅读 · 0 评论
分享