Dockerfile文件详解

Dockerfile文件详解

閱讀本文約花費: 6 (分鐘)什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。如果默认的文件名不叫Dockerfile,则可以在命docker build令中使用-f标志指向文件系统中任何位置的Dockerfile。注意最后面的“.”,代表的当前目录。 #例:docker build -t centos . #或者:docker build -f /path/dockerfile Dockerfile的基本结构 Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。 Dockerfile文件说明 Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。 在这里列出了一些常用的指令。 FROM:指定基础镜像,必须为第一个命令 BashCopy MAINTAINER: 维护者信息 BashCopy RUN:构建镜像时执行的命令 …

Read More Read More

Kubernetes 网络通讯模型解析

Kubernetes 网络通讯模型解析

閱讀本文約花費: 7 (分鐘)Kubernetes 基础架构 架构图 从架构图看到,一次外部访问请求,并不会直接请求到kubernetes中具体的某个集群或者某一个资源模块,是需要经过各模块资源间的调度来完成的。网络 继续剖析Kubernetes的网络,如上图我们可以发现Kubernetes存在3种网络:节点网络,Pod网络,Service网络,最后再加上Internet与Service之间的网络总共4种。 于是我们可以总结Kubernetes需要解决4种通信模式:     1.容器和容器之间的通信     2.Pod和Pod之间的通信     3.Pod和Service之间的通信     4.Internet和Service之间的通信 容器和容器之间的网络 每一个Pod管理着一个或多个container,而对于同一个Pod之间的容器之间共享一个网络命名空间,它们之间可以直接通过localhost进行访问通信,这里以docker作为容器为例,容器间正好采用了container模式,额外创建启动一个容器,而这个容器不会有自己的网卡以及配置IP地址,而是和一个指定的容器共享IP和端口; 在Kubernetes里面每一个Pod都有…

Read More Read More

炸裂!40+ 图万字长文拿下 HTTP

炸裂!40+ 图万字长文拿下 HTTP

閱讀本文約花費: 38 (分鐘)>本文将从以下几个方面进行分享。其中包括HTTP发展史,HTTP缓存代理机制,常用的web攻击,HTTP和HTTPS的流量识别,网络协议学习的工具推荐以及高频HTTP与HTTPS的高频面试题题解等,开工。 @ 1989年,蒂姆·伯纳斯 – 李(Tim Berners-Lee)在论文中提出可以在互联网上构建超链接文档,并提出了三点. URI:统一资源标识符。互联网的唯一ID HTML:超文本文档 HTTP:传输超文本的文本传输协议 1 HTTP应用在哪儿 学习一门知识,采用五分钟时间看看这个知识是干啥的可能会更加有目的性。HTTP可谓无处不在,这里例举出几个。 2 HTTP是什么 HTTP(hypertext transport protocol)翻译过来为”超文本传输协议”,文本可以理解为简单的字符文字组合,也可以理解为更为复杂的音频或者图像等。那么将这个词语拆分为三个部分。 “超文本”和”文本”相比多了一个字”超”,这样看来比文本丰富,因为它可以将多种文本/图像等进行混合,更重要的是可以从一个文本跳转到另一个文本(文本连接)。 “传输”,传输的过程中需要沟通,沟通即可能一对一沟通也可能一对多沟通(进行内容协商),…

Read More Read More

云原生:「落地」最重要

云原生:「落地」最重要

閱讀本文約花費: 17 (分鐘)1 云原生这个话题虽然我们谈了很多年了,但到底怎么去理解它,还是需要一段过程。提到云原生,很多人会联想到另一个词:「互联网原住民」,这个词代表了一群出生在互联网时代的人,他们看待世界和思考问题的方式从一开始就和互联网时代以前的人不同。 云原生也是如此。未来我们构建任何系统,不再是原来的那套思考方式,不是把云当成一个工具来使用,而是系统本身就生长于云,并在云上爆发,因此需要我们从根本上转换思考方式,重新定义业务系统。云原生和云计算也不一样,云计算的主角是计算、机器、资源,而云原生的主角是云上延伸出来的应用。 阿里云智能事业群总裁行癫曾经写过一个故事: 在 2004 年那个缺电的夏天,淘宝网全都挤在华星二楼:正是在那里,开始了我的淘宝生涯。我的位置在一个角落里,边上是一堆开着的服务器,吹出的风比七月烈阳下的风更热:因为限电,空调基本上只能看。刚到一个新环境,不知道该做什么,眼睁睁地看着一大群人忙忙碌碌。那时淘宝的节奏是非常快的,我记得小宝有一次说,当时网站如果要改点什么,只要跑到多隆那儿说一下,等他接杯水回到座位打开页面时,需求就已经上线了。 那是 2004 年,基于当时的技术架构,任何需求只要改一下代码,就能够立刻交付。而在现在这样复杂的技术架构下,很难通过简单修改代码实现需求迭代。 但是随着云原生时代的到来,我们又看到了新的机会。为了再现“当年的传说…

Read More Read More

语雀的技术架构演进之路

语雀的技术架构演进之路

閱讀本文約花費: 21 (分鐘)每个技术人心中或多或少都有一个「产品梦」,好的技术需要搭配好的产品,才能让用户爱不释手,尤其是做一款知识服务型产品。 作者何翊宇(花名:不四)是蚂蚁金服体验技术部高级前端技术专家,语雀产品技术负责人。本文从技术架构的视角,回顾了语雀的原型、内部服务和对外商业化的全过程,并对函数计算在语雀架构演进过程中所扮演的角色做了详细的介绍。 语雀是一个专业的云端知识库,用于团队的文档协作。现在已是阿里员工进行文档编写和知识沉淀的标配,并于 2018 年开始对外提供服务。 1 原型阶段 回到故事的开始。 2016 年,语雀孵化自蚂蚁科技,当时,蚂蚁金融云需要一个工具来承载它的文档,负责的技术同学利用业余时间,搭建了这个文档工具。项目的初期,没有任何人员和资源支持,同时也是为了快速验证原型,技术选型上选择了最低成本的方案。 底层服务完全基于体验技术部内部提供的 BaaS 服务和容器托管平台: Object 服务:一个类 MongoDB 的数据存储服务; File 服务:阿里云 OSS 的基础上封装的一个文件存储服务; DockerLab:一个容器托管平台; 这些服务和平台都是基于 Node.js 实现的,专门给内部创新型应用使用,也正是由于有这些降低创新成本的内部服务,才给工程师们提供了更好的创新环境。 语雀的应用层服务端,自然而然的选用了蚂蚁体验技术部开源的 No…

Read More Read More

数据中心网络架构浅谈(一)

数据中心网络架构浅谈(一)

閱讀本文約花費: 14 (分鐘)不论我们在讨论SDN,NFV或者其他的虚拟网络技术,有一点需要明确,网络数据包最终都是跑在物理网络上。物理网络的特性,例如带宽,MTU,延时等,最终直接或者间接决定了虚拟虚拟网络的特性。可以说物理网络决定了虚拟网络的“天花板”。在Mirantis对OpenStack Neutron的性能测试报告中可以看出,网络设备的升级和调整,例如采用高速网卡,配置MTU9000,可以明显提高虚拟网络的传输效率。在对网络性能进行优化时,有些物理网络特性可以通过升级设备或线路来提升,但是有些与网络架构有关。升级或者改动网络架构带来的风险和成本是巨大的,因此在架设数据中心初始,网络架构的选择和设计尤其需要谨慎。另一方面,在设计虚拟网络时,不可避免的需要考虑实际的物理网络架构,理解物理网络架构对于最终理解虚拟网络是不可缺少的。 接下来我将分几次说一说自己对数据中心网络架构的认识,想到哪说到哪,不对的地方请大家指正。 传统数据中心网络架构 在传统的大型数据中心,网络通常是三层结构。Cisco称之为:分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层: Access Layer(接入层):有时也称为Edge Layer。接入交换机通常位于机架顶部,所以它们也被称为ToR(Top of Rack)交换机,它们物理…

Read More Read More

Kubernetes中Pod之间使用虚拟二层网络连接

Kubernetes中Pod之间使用虚拟二层网络连接

閱讀本文約花費: 6 (分鐘)Kubernetes中Pod之间使用虚拟二层网络连接引起的调研 传统的三层网络 在传统的大型数据中心,网络通常是三层结构。这个模型包含了以下三层: Access Layer(接入层):有时也称为Edge Layer。接入交换机通常位于机架顶部,所以它们也被称为ToR(Top of Rack)交换机,它们物理连接服务器。 Aggregation Layer(汇聚层):有时候也称为Distribution Layer。汇聚交换机连接Access交换机,同时提供其他的服务,例如防火墙,SSL offload,入侵检测,网络分析等。 Core Layer(核心层):核心交换机为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性,核心交换机为通常为整个网络提供一个弹性的L3路由网络。 三层网络框架示意图如下: 其中:汇聚交换机以上的为L2网络,以上是L3网络。每组汇聚交换机管理一个POD(Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。 比如:同一机柜的连接的交换机叫接入交换机,连接多个接入交换机的叫汇聚交换机,它们处于同一个vlan网络。(在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的…

Read More Read More

感谢你,孔子

感谢你,孔子

閱讀本文約花費: 5 (分鐘)· 韩 寒 ·今天我去电影院,本来想看《锦衣卫》,但是可能我真的已经对国产的古代大片失去了兴趣,买了一张韩国电影《母亲》以后就回家了。但是我欣喜的发现,《孔子》已经下线了。这意味着,这部电影在商业上彻底的失败了。 孔子的失败是必然的,从强制阿凡达下线,到胡玫导演的“阿凡达除了特技没有什么好看的”“一群小精灵飞来飞去”“当然的,(我成为国内第一个票房过亿的女导演)这有什么疑问吗?”“(历史上子路和南子都不是这样死的)这个人根本不懂电影,还专家呢,是砖家吧,这个人一看就是门外汉,他大可不必这样沽名钓誉”“中国人都要看《孔子》”,“相信大家都会做出正确的选择”,到编剧陈汗对所有质疑的驳斥(事实上,编剧的失败的这部电影最大的失败),到有些演员对不喜欢这部电影的人叫嚣,到制片方对差评是因为另外一部国产电影花钱策划的诬陷,到对票房的谎报,乃至到最后,对待那些对于影片拍摄制作质量的质疑的观众,统统拿着对先圣大不敬,不尊重传统文化,欺师灭祖没有道德的帽子乱扣,这可能是中国建国以来素质最差,对观众最不尊重,公关最失败,最没有儒家风范的剧组。这样一群各自心怀小九九的人,居然九九归一,凑在一起拍《孔子》,可能他们对孔子的最大认识就是要帮助统治阶级教化人民吧。事实上,他们也是这么做的,只是起到了反面的效果。 《孔子》的失败对于中国电影是个绝对利好的消息,在评论这部电影的时候,…

Read More Read More

非科班学习编程一定得知道这几个网站!

非科班学习编程一定得知道这几个网站!

閱讀本文約花費: 2 (分鐘) 有些才开始学习计算机的小伙伴,不知道哪里去哪些网站学习课程,其实最开始通过视频的学习可以了解技术的整体架构,然后再去阅读经典书籍并实战就好了,下面盘点一下曾经留下过脚印的国内网站。原文已经收录开源项目LinuxGuide 1 B站 这不是二次元网站么,嗯,对。但是很多”大佬”的良心课程很多都放在这里了,白嫖军,我们随便看几个 计算机速成 c++百万高并发 这个视频,当时秋招的时候很多小伙伴就拿来学习修改,收获真的很大 2 学堂在线 学堂在线是清华大学于发起建立的慕课平台,曾经看过Linux内核分析与应用,这门课结合《Linux内核设计与实现》书籍而出,有时间可以去看看。 3 visualgo 这一个是可视化各种数据结构,可以去看一波,效果如下 4 github 通过关键词搜索的方法去定位自己需要的项目,并跑起来调试修改。 5 牛客网 牛客网有大量的笔试面试题,公司内推等,准备面试的小伙伴可以多多关注,多多练习相关的题,找找感觉 6 51自学网 为什么不是慕课网,腾讯课堂等,这个有一定的私心,当初高中的时候学习ps就是在上面学习的,现在已经完全改版了。但是平面设计等还是不错的网站 7 leetcode 面试大厂必看的网站,上面将算法进行了分类,建议上手就刷二叉树 8 Stack Overflow Stack Overflow是I…

Read More Read More

CephFS+Kubernetes 在网易轻舟容器平台的实践

CephFS+Kubernetes 在网易轻舟容器平台的实践

閱讀本文約花費: 8 (分鐘)在网易集团,基于 Kubernetes 构建的网易轻舟云原软件生产力平台扮演着支撑数字化业务快速高效创新的重任,帮助业务团队快速实现云原生应用,提高研发效能,并节省运维成本。 作为网易轻舟云原生平台的存储后端,CephFS 主要为网易轻舟容器平台 NCS 解决容器间共享存储的问题。尤其是在当前比较火的 AI 训练场景应用十分广泛,存储规模达已达数 PB 级,CephFS 的性能优化等工作非常重要。 Ceph 和 CephFS 简介 Ceph 由 RADOS 作为底座,上层提供对象、块、文件等接口服务。RADOS 由 MON、OSD、MGR 组成,MON 负责集群的各类视图(osdmap,pgmap 等),健康状态的管理。MGR 则提供了丰富的系统信息查询功能,以及支持第三方模块接入(Zabbix,Prometheus,Dashboard 等)。OSD 则负责最终的数据存储,一般一个 OSD 对应一块磁盘。 CephFS 在此架构基础之上增加了 MDS 和 client,其中 MDS 负责文件系统的元数据管理和持久化操作。client 则对外提供了兼容 POSIX 语义的文件系统客户端,可通过 mount 命令进行挂载。 CephFS 典型实践 部署 整个 CephFS 在轻舟 Kubernetes 环境中的部署架构如下: 在 Kubernetes 的使…

Read More Read More

Kubernetes 是一个声明式容器编排引擎

Kubernetes 是一个声明式容器编排引擎

閱讀本文約花費: 1 (分鐘)Kubernetes 是一个声明式容器编排引擎。在声明式系统中,你可以声明期望的状态,系统将不断地调整实际状态,直到与期望状态保持一致。因此,“声明式系统”这个术语表示一组经过精确计算的相互协调的操作,用来将系统的当前状态调整为期望状态。但实际上 Kubernetes 并不是这么工作的! Kubernetes 不会基于系统当前状态和期望状态来来确定接下来要执行的一组经过精确计算的相互协调的命令,而是仅基于系统当前状态确定下一个要执行的命令,然后不断迭代,直到没有下一个命令可以执行,系统就达到了稳定状态。 Tags: Kubernetes, 容器

云上 ARM 实例应用优化之我见

云上 ARM 实例应用优化之我见

閱讀本文約花費: 22 (分鐘) 亚马逊AWS官方博客 发布于:2020 年 8 月 10 日 10:00 ARM 处理器的崛起 过去两个月的科技媒体上关于 ARM 芯片的新闻可谓是高潮迭起,不断的引起人们的关注。 首先是在 5 月 11 日,AWS 宣布了基于自研的 Graviton 2 处理器(使用了 ARM Neoverse N1 核心)的第六代 EC2 实例 – M6g 正式发布。这似乎揭开了云计算市场上 ARM 处理器大规模应用的的序幕。 紧接着,在今年 6 月 23 日的 WWDC 大会上,Apple 公司宣布了一个影响深远的决定: 计划从 2020 年年底开始,Mac 计算机将会从 Intel 芯片过渡到使用基于 ARM 的自研芯片。也许我们要问,ARM 处理器将将会在桌面设备上复制移动设备的成功吗? 第三则新闻是关于高性能计算。6 月 22 日发表的最新的一期 TOP500 榜单上,日本的 Fugaku 系统以 415.5 千万亿次浮点运算的高性能 LINPAC 成绩成为 TOP500 的第一名。而令人惊讶的是这是第一个使用 ARM 处理器的高性能处理系统。 林林总总,即使我们是半导体行业的门外汉也不难得出一个结论 – ARM 处理器不仅仅统治了手机、嵌入式应用这些传统的优势领域,或将在桌面系统、高性能计算尤其是云计算领域扮演越来越重要的角色。 EC2 上的 ARM…

Read More Read More

上 Kubernetes 到底有什么业务价值?

上 Kubernetes 到底有什么业务价值?

閱讀本文約花費: 13 (分鐘)开篇,我们先思考这样一个问题:“为什么要基于 Kubernetes 去构建一个应用管理平台?” 上图是一个本质的问题,我们在落地 K8s 经常遇到的一个问题。尤其是我们的业务方会问到这么一个问题,我们上 Kubernetes 有什么业务价值?这时候作为我们 K8s 工程师往往是很难回答的。原因在哪里呢?实际上这跟 K8s 的定位是相关的。K8s 这个项目呢,如果去做一个分析的话,我们会发现 K8s 不是一个 PaaS 或者应用管理的平台。实际上它是一个标准化的能力接入层。什么是能力接入层呢?大家可以看一下下图。 实际上通过 Kubernetes 对用户暴露出来的是一组声明式 API,这些声明式 API 无论是 Pod 还是 Service 都是对底层基础设施的一个抽象。比如 Pod 是对一组容器的抽象,而 Deployment 是对一组 pod 的抽象。而 Service 作为 Pod 的访问入口,实际上是对集群基础设施:网络、网关、iptables 的一个抽象。Node 是对宿主机的抽象。Kubernetes 还提供了我们叫做 CRD(也就是 Custom Resource)的自定义对象。让你自己能够自定义底层基础设施的一个抽象。 而这些抽象本身或者是 API 本身,是通过另外一个模式叫做控制器 (Controller) 去实现的。通过控制器去驱动…

Read More Read More

利用BeanDefinitionBuilder手动向Spring容器中注入Bean

利用BeanDefinitionBuilder手动向Spring容器中注入Bean

閱讀本文約花費: 1 (分鐘)在一此场景下,如果需要动态的将某个类注册spring容器中,利用BeanDefinitionBuilder就可以达到这个目的。做个简单的demo实验,定义一个类Person: JavaCopy 手动注册bean的示例类PersonBeanRegiser,它实现了BeanFactoryAware接口,能够获取到Spring工厂类,因BeanFactory是一个接口,通过调试可知,Spring窗口注入的工厂实现类是DefaultListableBeanFactory,通过其源码可以看到,这个Bean工厂类实现了BeanDefinitionRegistry接口,通过这个接口的registerBeanDefinition方法,就可以将bean注册到Spring容器了。 JavaCopy JavaCopy 通过执行main方法,可以正常打印出name值:张三 Tags: APP, Java, Spring, 容器

当我们谈注册中心时谈什么?

当我们谈注册中心时谈什么?

閱讀本文約花費: 11 (分鐘)最近工作重心转向了注册中心,于是想来写一篇关于注册中心的文章 概念 什么是注册中心,以大多数人熟悉的RPC框架来说,通常RPC中有三种角色: provider 服务提供者 consumer 服务消费者,即调用方 registry 注册中心,让consumer能发现provider的关键 注册中心对于服务提供者需要具备服务注册、注销的能力,对于服务消费者需要提供查询服务、感知服务变化的功能。当然还需要解决一些其他问题才能成为一个优秀的注册中心,如高可用、高性能、水平扩展能力、服务探活能力、路由功能、多机房(多活)能力等。 特性详解 存储 可以将注册中心理解为一个存储系统,存储着服务名与服务提供方的映射表。由此可见DNS是目前使用最广泛的注册中心。一般注册中心对存储没有什么要求,甚至你可以基于数据库来实现一个注册中心。 高可用 在聊高可用前,假定你了解分布式CAP理论,如果不知道可以稍微网上查一下,这里就不赘述。 其中对注册中心的高可用要求尤其高,它有如下几层含义,首先肯定是集群部署,无单点问题,其次就算整个集群挂掉了,也不能影响现有服务的调用,只不过现有的调用关系无法及时改变而已。 在分布式理论CAP中,注册中心更理想的应该是AP模式。(此结论更多讨论参考文末的《阿里巴巴为什么不用ZooKeeper做服务发现》),可以简单的从以下两个场景来理解:​ 注…

Read More Read More

IT外包公司的真有你想的那么不堪嘛?

IT外包公司的真有你想的那么不堪嘛?

閱讀本文約花費: 6 (分鐘)现在好多小伙伴都问我,我是进小公司比较好,还是进外包公司比较好呢,我就来说说这个问题。 我们首先来说说外包是什么? 外包就是公司从外面请来的帮助你开发软件系统的,类似于古代地主秋忙的时候,请的短工。 通常都是因为公司可能只是临时需要开发一个软件系统,让你过来开发一下,等系统开发完了,可能就让你滚蛋了。 这些公司出钱让我们过来干活,也就是我们口中说的甲方爸爸。 当然,甲方爸爸不可能挨个的找到你,他们通过把自己需要开发的系统,交给一些外包的中间商,然后这些中间商在招人去开发。 说白了,就是甲方公司想省钱省力。 外包公司拿到甲方爸爸的项目,然后由领队的项目经理带人去甲方公司驻厂开发,驻厂开发的通常来说是为了方便和甲方公司的人讨论需求。 当然甲方提需求的人可能是不太懂技术的,会乱提需求。比如之前提出要根据手机壳颜色更改主题颜色的奇葩需求。呵呵 02 一般谁会来当甲方爸爸呢? 当然是有钱的,通常是政府、国企(中国电信、移动、联通)、银行(工农中建交等等)、保险(平安啊,人寿等等),这些甲方爸爸也逐渐的互联网化,项目需求特别的多。 此外,还有一种大家都会忽视的就是大的互联网公司的外包,比如阿里巴巴、华为,你没听错,我们的互联网技术巨头也会找外包。他们一般项目开发多,上线也比较急,公司也是为了节约成本,毕竟一个阿里的研发的工资要比一个外包高好多。 通常会采取一个本部…

Read More Read More

     
Scroll Up