用户您好!请先登录!

Archives九月 2019

零拷贝(Zero-copy)那点事

零拷贝(zero-copy)是实现主机或路由器等设备高速网络接口的主要技术。零拷贝技术通过减少或消除关键通信路径影响速率的操作,降低数据传输的操作系统开销和协议处理开销,从而有效提高通信性能,实现高速数据传输。

在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载。

实现零拷贝用到的最主要技术是 DMA 数据传输技术和内存区域映射技术:

  • 零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的 I/O 拷贝操作。
  • 零拷贝机制可以减少用户进程地址空间和内核地址空间之间因为上下文切换而带来的 CPU 开销。

阅读更多

OpenStack历史的那点事

对于大部分人来说,这是一个很陌生的词,甚至不知道它到底是什么,从哪里来,有什么用,和自己的工作有什么关系。

全面讲解OpenStack技术知识

参考一下百度百科的解释,OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

纵观OpenStack的发展史,从2014/2015的爆发顶点,到现在势微甚至逐渐被人遗忘,中间发生了什么,是什么造成了今天的局面,是很有意思的事情。

阅读更多

SD-WAN与VPN的选择

当谈到是选择SD-WAN还是虚拟私人网络时,企业往往都要考虑两者之间的成本、云使用和应用程序等差异和因素。一方面,也是由于近些年来业界对SD-WAN的热度颇高。因此,不少企业想知道,选择SD-WAN与虚拟私人网络的根本区别和相似之处到底在哪。

先来说说虚拟私人网络。虚拟私人网络的定义是通过不太安全的网络传输(例如互联网)创建安全网络。长久以来,虚拟私人网络的基本任务一直是删除来自已验证端点的数据包。端点之间的所有通信都会进行最高级别的加密,这构成了Internet上虚拟私人网络的基础,可以说它是简单且具有成本效益的,但在保证网络性能方面可能存有问题。

阅读更多

How technology changes the rules for doing agile (技术如何改变敏捷的规则)

Containers and Kubernetes were not here when we started doing agile. But they change what used to be the hardest part: Applying agile beyond a small group, to the whole organization

By Matt Hicks | January 17, 2018

当我们开始推行敏捷时,还没有容器和 Kubernetes。但是它们改变了过去最困难的部分:将敏捷性从小团队应用到整个组织。

— Matt Hicks(作者)

CIO Containers Ecosystem
More companies are trying agile and DevOps for a clear reason: Businesses want more speed and more experiments – which lead to innovations and competitive advantage. DevOps helps you gain that speed. But doing DevOps in a small group or startup and doing it at scale are two very different things. Any of us who’ve worked in a cross-functional group of 10 people, come up with a great solution to a problem, and then tried to apply the same patterns across a team of 100 people know the truth: It often doesn’t work. This path has been so hard, in fact, that it has been easy for IT leaders to put off agile methodology for another year.

阅读更多

Grit: The power of passion and perseverance

以下为TED中英文对照演讲全文:

When I was 27 years old, I left a very demanding job in management consulting for a job that was even more demanding: teaching. I went to teach seventh graders math in the New York City public schools. And like any teacher, I made quizzes and tests. I gave out homework assignments. When the work came back, I calculated grades.

在我27岁的时候,我辞去了一份非常有挑战性的职业—企业管理咨询,转而投入了一份更加具有挑战性的职业:教育。我来到纽约的一些公立学校教7年级的学生的数学。和别的老师一样,我会给学生们做小测验和考试,我会给他们布置家庭作业。当这些试卷和作业收上来之后,我计算了他们的成绩。

阅读更多

学习一下美团集群调度系统HULK的技术演进

本文根据美团基础架构部/弹性策略团队负责人涂扬在2019 QCon(全球软件开发大会)上的演讲内容整理而成。本文涉及到的Kubernetes集群管理技术,美团相关的技术实践可参考此前发布的相关文章。

HULK是美团的容器集群管理平台。在HULK之前,美团的在线服务大部分部署都是在VM上,在此期间,我们遇到了很大的挑战,主要包括以下两点:

  • 环境配置信息不一致:部分业务线下验证正常,但线上验证却不正常。
  • 业务扩容流程长:从申请机器、资源审核到服务部署,需要5分钟才能完成。

因为美团很多业务都具有明显的高低峰特性,大家一般会根据最高峰的流量情况来部署机器资源,然而在业务低峰期的时候,往往用不了那么多的资源。在这种背景下,我们希望打造一个容器集群管理平台来解决上述的痛点问题,于是HULK项目就应运而生了。

阅读更多

降低软件复杂性的一般原则和方法

对于斯坦福教授、Tcl语言发明者John Ousterhout 的著作《A Philosophy of Software Design》而言,如果按照IT图书出版的惯例,冠名为“实践”,则书中内容可能关注的是某项技术的细节和技巧;冠名为“艺术”,内容则是记录一件优秀作品的设计过程和经验;而冠名为“哲学”,则是一些通用的原则和方法论,这些原则方法论串起来,能够形成一个体系。用一句话概括《A Philosophy of Software Design》,软件设计的核心在于降低复杂性。

本篇文章是围绕着“降低复杂性”这个主题展开的,很多重要的结论来源于John Ousterhout,笔者觉得很有共鸣,就做了一些相关话题的延伸、补充了一些实例。虽说是”一般原则“,也不意味着是绝对的正确、普适,这里整理出来,只是为了引发大家对软件设计的思考。

如何定义复杂性

关于复杂性,尚无统一的定义,从不同的角度可以给出不同的答案。可以用数量来度量,比如芯片集成的电子器件越多越复杂;按层次度量,复杂度在于层次的递归性和不可分解性。在信息论中,使用熵来度量信息的不确定性。

阅读更多

MySQL与PostgreSQL的选择

如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。

MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库?MySQL还是PostgreSQL呢?该选择哪个开源数据库呢?

在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的,你希望一开始就选择正确。

两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品,本文对这两个数据库的高层次概览将会有助于你选择最适合自己需要的。

阅读更多

老生长谈GC,没道理不明白了

老生常谈的问题,Java内存的回收原理与优化,最佳实践是通读源码,多实践;很多内存问题只有在一定规模的应用压力场景下才能触发,这时候大家只能从那些实际解决过该类问题的大牛们的分享中去膜拜学习了。

GC 调优目标

大多数情况下对 Java 程序进行 GC 调优,主要关注两个目标:

  • 响应速度(Responsiveness):响应速度指程序或系统对一个请求的响应有多迅速。

比如,用户订单查询响应时间,对响应速度要求很高的系统,较大的停顿时间是不可接受的。调优的重点是在短的时间内快速响应。

  • 吞吐量(Throughput):吞吐量关注在一个特定时间段内应用系统的最大工作量。

例如每小时批处理系统能完成的任务数量,在吞吐量方面优化的系统,较长的 GC 停顿时间也是可以接受的,因为高吞吐量应用更关心的是如何尽可能快地完成整个任务,不考虑快速响应用户请求。

GC 调优中,GC 导致的应用暂停时间影响系统响应速度,GC 处理线程的 CPU 使用率影响系统吞吐量。

阅读更多

负载均衡技术那些事

1、什么是负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡(LoadBalance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2、负载均衡层的核心思想

2-1、一致性哈希与Key的选取

一致性Hash算法是现代系统架构中的最关键算法之一,在分布式计算系统、分布式存储系统、数据分析等众多领域中广泛应用。

阅读更多

Service Mesh与Istio

微服务架构的演进

作为一种架构模式,微服务将复杂系统切分为数十乃至上百个小服务,每个服务负责实现一个独立的业务逻辑。这些小服务易于被小型的软件工程师团队所理解和修改,并带来了语言和框架选择灵活性,缩短应用开发上线时间,可根据不同的工作负载和资源要求对服务进行独立缩扩容等优势。

另一方面,当应用被拆分为多个微服务进程后,进程内的方法调用变成了了进程间的远程调用。引入了对大量服务的连接、管理和监控的复杂性。

浅谈微服务架构中的基础设施:Service Mesh与Istio

该变化带来了分布式系统的一系列问题,例如:

阅读更多

创业前选择团队重要,还是筹集资金重要?

这个问题也有相当的诱导性,对于创业来说,团队、资金、方向,执行力,市场的应对能力都很重要。

当我们说选择团队重要时,通常是我们有一点点资金,一个说着还不错的点子,但人手么就差了那么一点点,在那个时刻就显得团队很重要,或者说如何来搭建自己互补的团队很重要。通常人们人说,当我们做事的时候,所需要的人的资源就在自己的身边,只是看我们能不能找得到。更重要的是我们组建这支团队的基础是什么,是为了做一件牛逼的事情,是为了改变人们的生活亦或者只是觉得大家靠谱,可以做点事情,没准就成功了。这里面区别是非常大的,它决定了这个团队能否团结一致,走到最后。

资金在任何时候都是很重要的,但这里指的是起启步资金,与筹集资金相比,更重要的是造血能力,能不能找到可让用户付费的商用产品及服务。一味补贴,一味花投资人的钱在当下早已没有市场了。

如何打造企业级的研发团队

| 何为技术领导力

技术领导力是什么呢?就一句话:带领团队承担企业经营使命。这句话的核心在于三点:

第一,是使命必达。何谓使命必达,就是这个问题到你这里,就必须终结掉,如果是你的问题,即使很困难,也要搞定,不要找客观理由;如果不是你的问题,你协同其他人也要搞定,最终你呈献给用户的,不是说这个问题是别人的问题,你去找他吧,我帮你们搭线,而是要通过你的努力,通过你协调各方之后解决问题的结果,把最终的结果给到你的用户。

其实当你把事情往外推的时候,你也在把你的职业机会也在往外推,比如你是一个系统或者一个产品的 Owner,如果只是关注自己的本身,几年后有可能你的视野和格局还是停留在这个系统或者产品本身上,但是如果你平时习惯于关注上下游系统,关注整个产品生态,关注公司的整个战略是什么?你做的事情处在战略的那个环节,你要解决这个问题,你需要协同那些干系方,需要什么样的配套资源来解决,你将会成长的非常快。

阅读更多

Reactor响应式编程入门

同步阻塞

“你知道什么是同步阻塞吗”,当然知道了。“那你怎么看它呢”,这个。。。

在同步阻塞的世界里,代码执行到哪里,数据就跟到哪里。如果数据很慢跟不上来,代码就停在那里等待数据的到来,然后再带着数据一起往下执行。可以说是,代码执行和数据是结伴而行,不离不弃。执子之手与子偕老。让人老感动了。

如果还不太理解的话,可以认为代码执行其实就是一些行为动作,这些行为动作的目的就是为了获取/操作数据。

例如加法,这里的行为动作就是执行相加,数据就是加数和被加数。操作结果就是得到了另一个数据,即两个数的和。

只是在这个加法里,数据跑的特别快,(CPU的寄存器,能不快吗),我们几乎觉察不到执行动作在等数据的过程。怎么办呢,那就看一个能把它们拉开的例子。

那自然非数据库查询莫属了,既有网络I/O,又有磁盘I/O,肯定会慢一些。

阅读更多

Istio的分层架构

Istio是ServiceMesh的产品化落地:

  1. 它帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全
  2. 帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:
    • 服务发现(discovery)
    • 负载均衡(load balancing)
    • 故障恢复(failure recovery)
    • 服务度量(metrics)
    • 服务监控(monitoring)
    • A/B测试(A/B testing)
    • 灰度发布(canary rollouts)
    • 限流限速(rate limiting)
    • 访问控制(access control)
    • 身份认证(end-to-end authentication) 等功能。
  3. 它使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能

今天来说一下Istio的核心架构设计

阅读更多

SD-WAN学习用例

SD-WAN服务基于高品质的网络资源,充分利用SDN/NFV技术进行重构骨干网络,帮助企业客户快速实现总部与分支机构互联、数据中心互联和公有云互联。下面通过一个实例来快速了解SD-WAN服务。

客户介绍

某集团公司是知名的钟表行业领军人物,业务领域覆盖范围广,在全球有多个分支机构。随着公司业务的不断扩展,网络系统已不能满足,现提出改造:

  • 全球有多个分支机构,需要流畅的协同办公;
  • 国内多个分支机构互访不畅;
  • 流动办公人员的国际国内访问;
  • 在保障网络顺畅的同时,要保障网络安全;

阅读更多

看得懂的分布式协调算法Paxos图解

Google Chubby的作者Mike Burrows对Paxos的评价极高:“这个世界上只有一种一致性算法,那就是 Paxos”。

其实也不为过,像非常有名的 Raft 算法、Zab 算法等都是基于 Paxos 的简化和改进。

Paxos 解决什么问题

Paxos 是解决分布式环境下多节点的数据一致性问题,先看下一致性问题。

例如一个cache集群有3个节点,每个节点都可以写入。

深度原理学习之–让人看得懂的分布式协调算法Paxos图解

集群内各个节点需要做数据同步,如果没有一致性算法做保证,3个节点内数据就可能混乱,例如:

  • 节点1收到请求后,同步给节点2、3,节点2立即收到了,但因为网络原因,节点3没有立即同步。
  • 在节点3同步之前,节点2也发起了同步请求,因为2、3间的网络状况好,节点3立即同步了。
  • 所以,节点1、2的同步顺序是x=1,x=2,而节点3的同步顺序是x=2,x=1,造成了节点间数据不一致。

Paxos 就是用来解决这个问题,保证各节点数据的绝对一致,不会混乱。

阅读更多

工作流引擎参考

引用自  https://github.com/meirwah/awesome-workflow-engines

完整的产品

  • Airflow
    • 基于python的平台,用于运行任务的有向无环图(DAG)
  • Argo
    • 开源容器本地工作流引擎,用于完成Kubernetes上的工作
  • Azkaban
    • -批量工作流作业调度程序创建在LinkedIn运行Hadoop作业。
  • Brigade
    • – Brigade是一个工具,运行脚本,自动化任务在云中-作为您的Kubernetes集群的一部分。
  • Cadence
    • 一个编排引擎,执行由Uber Engineering开发的异步长时间运行的业务逻辑。
  • CloudSlang
    • -工作流引擎自动化您的DevOps用例。

阅读更多

Prometheus – 云原生时代的监控平台

一、简介

Kubernetes自从2012年开源以来便以不可阻挡之势成为容器领域调度和编排的领头羊,Kubernetes是Google Borg系统的开源实现,于此对应Prometheus则是Google BorgMon的开源实现。Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库。从字面上理解,Prometheus由两个部分组成,一个是监控报警系统,另一个是自带的时序数据库(TSDB)。

2016年,由Google发起的Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也十分活跃,在GitHub上拥有两万多Star,并且系统每隔一两周就会有一个小版本的更新。

阅读更多

实时数据中台的组建

在企业业务发展过程中所累积的大量数据,往往分散在各个业务单元和组织内部,形成一个个“数据孤岛”、“数据烟囱”。而数据中台是着眼于企业数据资产汇集、数据算法迭代、数据能力输出的根基平台,以数据指引业务决策并驱动业务增长,是破除数据孤岛的关键策略。

阿里数据架构师告诉你,如何建立实时数据中台

数据中台的计算载体包括hadoop、MPP以及流处理引擎,但你会发现这三类计算载体承载的数据内涵是不一样的。

Hadoop、MPP中的数据模型往往是精心打磨的离线数据仓库模型,无论是维度建模还是关系建模,其强调数据模型的复用,并且通过建模屏蔽了底层数据的差异,从而高效率的支撑上层应用,但流处理不一样。

阅读更多

业务中台是怎么搭建的

最近企业突然流行起所谓业务中心,数据中心的概念,估计是被阿里玩坏了,忽悠忽悠企业,吵个新概念。只不过是新瓶装老醋罢了。根据周知的理解,如下图所示:

只需5步搭建你的业务中台

业务抽象

在业务抽象阶段,通过业务调研和业务分析,设计业务蓝图和抽象业务元素,为下一阶段的中心建模阶段准备顶层思想和业务素材。这一阶段,根据企业不同的实际情况,可轻可重。比如企业已经做过咨询调研和流程梳理工作了,那就可以在以往工作成果基础上进行短期的业务理解和业务设计工作了。如果企业对以往的咨询工作并不满意或者上一次咨询时间久远,竞争环境发生了巨大的变化,这就需要做仔细完整的业务咨询了。

阅读更多

1 2 3 4 5