漫谈容器与容器云

基础设施与软件架构

从经典三层架构到容器云

从单体架构到微服务架构

服务管理

服务编排与部署

随着业务的增加,从单体架构到微服务架构似乎是一种必然的趋势。容器带来了新的服务发布方式——以容器镜像作为服务从开发到运维的交付产物——但是并不能解决服务拆分带来的庞大服务数量问题。此外,对于一个大型系统来说,无论是服务之间存在的依赖关系,还是服务与外部系统的依赖关系都是非常复杂的,依靠人工来记录和配置这些依赖显然费力不讨好,而且容易出错。因此,我们的容器云平台迫切需要对容器进行编排与部署的工具。

阅读全文

Linux环境编程(4)-进程生命周期

进程的层次关系

pid是进程ID,pgid是进程组ID,sid是会话ID。默认情况下,新创建的进程会继承父进程的进程组ID和会话ID。

阅读全文

Linux环境编程(0)-从应用到内核

编译的过程:

预处理:替换宏

编译:将源代码编译成汇编

汇编:将汇编代码编译成二进制

链接:地址,so

阅读全文

Java多线程编程实战指南(8)-线程管理

线程管理

ThreadGroup是个隐含的概念,通常情况下不用管。

uncaughtExceptionHandler可以用来处理线程的异常退出状态,比如实现线程退出重启。uncaughtExceptionHandler实例选择的优先级:本线程设置的handler > 线程池handler > 默认的handler。

阅读全文

Airflow源码分析(4)-scheduler分析

scheduler的主循环

scheduler的逻辑:

  1. 遍历DAG路径下的所有dag文件

阅读全文

LeetCode题解-Best Time to Buy and Sell Stock

对LeetCode上遇到的股票问题做一个总结,涉及到6道题:121, 122, 123, 188, 309, 714

题目地址:Best Time to Buy and Sell Stock

阅读全文

k8s核心组件分析-scheduler

k8s中的scheduler负责资源调度,具体来说,是将某个pod绑定到某个node上。scheduler的输入是待调度的pod和可调度的node,输出是pod和node的bind对象。

scheduler的输入输出

阅读全文

Docker架构分析

Docker架构概览

网上很多架构图中都有Docker Engine和Job,但是1.7版本其实不再用这种方式。

阅读全文

Airflow源码分析(3)-jinja渲染部分

简介

Jinja渲染在Airflow用于参数跟字段的渲染,这里做一个简单的实现分析。

分析

模板渲染的流程是在TaskInstance()._run_raw_task()中进行的。

阅读全文

Airflow源码分析(2)-xcom部分

xcom简介

XComs(cross-communication)使得任务之间可以交换信息,允许更细粒度的控制和状态共享。XComs包含key, value, timestamp, 同时也包含创建xcom的任务实例的task_id, dag_id, execution_date等。

阅读全文