保证分布式系统数据一致性的6种方案

在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。 在分布式系统来说,如果不想牺牲一...

2018-01-26 14:45:32

阅读数:73

评论数:0

Linux Namespace系列(09):利用Namespace创建一个简单可用的容器

本文将演示如何利用namespace创建一个完整的容器,并在里面运行busybox。如果对namespace不是很熟悉,请先参考前面几遍介绍不同类型namespace的文章。 busybox是一个Linux下的可执行程序,采用静态链接,不依赖于其他任何动态库。他里面实现了一些Linux下常用...

2018-01-26 14:34:26

阅读数:71

评论数:0

Linux Namespace系列(08):user namespace (CLONE_NEWUSER) (第二部分)

本篇将主要介绍user namespace和其他类型的namespace的关系。 权限涉及的范围非常广,所以导致user namespace比其他的namespace要复杂; 同时权限也是容器安全的基础,所以user namespace非常重要。 本篇所有例子都在ubuntu-serv...

2018-01-26 14:32:38

阅读数:87

评论数:0

Linux Namespace系列(07):user namespace (CLONE_NEWUSER) (第一部分)

User namespace用来隔离user权限相关的Linux资源,包括user IDs and group IDs,keys , 和capabilities. 这是目前实现的namespace中最复杂的一个,因为user和权限息息相关,而权限又事关容器的安全,所以稍有不慎,就会出...

2018-01-26 14:31:51

阅读数:73

评论数:0

Linux Namespace系列(06):network namespace (CLONE_NEWNET)

network namespace用来隔离网络设备, IP地址, 端口等. 每个namespace将会有自己独立的网络栈,路由表,防火墙规则,socket等。 每个新的network namespace默认有一个本地环回接口,除了lo接口外,所有的其他网络设备(物理/虚拟网络接口,网桥等)只...

2018-01-26 14:31:01

阅读数:56

评论数:0

Linux Namespace系列(05):pid namespace (CLONE_NEWPID)

PID namespaces用来隔离进程的ID空间,使得不同pid namespace里的进程ID可以重复且相互之间不影响。 PID namespace可以嵌套,也就是说有父子关系,在当前namespace里面创建的所有新的namespace都是当前namespace的子namespace。...

2018-01-26 14:30:22

阅读数:41

评论数:0

Linux Namespace系列(04):mount namespaces (CLONE_NEWNS)

Mount namespace用来隔离文件系统的挂载点, 使得不同的mount namespace拥有自己独立的挂载点信息,不同的namespace之间不会相互影响,这对于构建用户或者容器自己的文件系统目录非常有用。 当前进程所在mount namespace里的所有挂载信息可以在/proc...

2018-01-26 14:27:35

阅读数:55

评论数:0

Linux Namespace系列(03):IPC namespace (CLONE_NEWIPC)

https://segmentfault.com/a/1190000006908729 IPC namespace用来隔离System V IPC objects和POSIX message queues。其中System V IPC objects包含Message queue...

2018-01-25 20:52:21

阅读数:70

评论数:0

Linux Namespace系列(02):UTS namespace (CLONE_NEWUTS)

https://segmentfault.com/a/1190000006908598 UTS namespace用来隔离系统的hostname以及NIS domain name。 这两个资源可以通过sethostname(2)和setdomainname(2)函数来设置,以及通过...

2018-01-25 20:51:25

阅读数:64

评论数:0

Linux Namespace系列(01):Namespace概述

https://segmentfault.com/a/1190000006908272 Namespace是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局系统资源,改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他nam...

2018-01-25 15:26:38

阅读数:95

评论数:0

Linux TTY/PTS概述

https://segmentfault.com/a/1190000009082089 当我们在键盘上敲下一个字母的时候,到底是怎么发送到相应的进程的呢?我们通过ps、who等命令看到的类似tty1、pts/0这样的输出,它们的作用和区别是什么呢? TTY历史 支持多任务的计...

2018-01-25 15:21:41

阅读数:85

评论数:0

Linux下的虚拟Bridge实现-3.0内核

http://www.cnblogs.com/zmkeil/archive/2013/04/21/3034733.html     Linux下的Bridge也是一种虚拟设备,这多少和vlan有点相似,它依赖于一个或多个从设备。与VLAN不同的是,它不是虚拟出和从设备同一层次的镜像设备,而是...

2018-01-25 14:12:22

阅读数:80

评论数:0

netif_receive_skb 函数解析

int netif_receive_skb(struct sk_buff *skb) {    //略去一些代码     rcu_read_lock();     //第一步:先处理 ptype_all 上所有的 packet_type->func()               ...

2018-01-17 11:27:30

阅读数:51

评论数:0

Linux内核分析 - 网络[四]:路由表

路由表     在内核中存在路由表fib_table_hash和路由缓存表rt_hash_table。路由缓存表主要是为了加速路由的查找,每次路由查询都会先查找路由缓存,再查找路由表。这和cache是一个道理,缓存存储最近使用过的路由项,容量小,查找快速;路由表存储所有路由项,容量大,查找慢。 ...

2018-01-17 11:24:04

阅读数:53

评论数:0

Linux内核分析 - 网络[三]:从netif_receive_skb()说起

在netif_receive_skb()函数中,可以看出处理的是像ARP、IP这些链路层以上的协议,那么,链路层报头是在哪里去掉的呢?答案是网卡驱动中,在调用netif_receive_skb()前,   相关阅读: Linux内核分析 - 网络[一]:收发数据包的调用 http://www...

2018-01-17 11:23:24

阅读数:50

评论数:0

Linux内核分析 - 网络[二]:网卡驱动接收报文

纠结了好多天,终于弄懂了B440X的处理。 上篇讲到通过中断,最终网卡调用了b44_rx()来接收报文 相关阅读: Linux内核分析 - 网络[一]:收发数据包的调用 http://www.linuxidc.com/Linux/2011-05/36063.htm Linux内核分析 - ...

2018-01-17 11:22:02

阅读数:51

评论数:0

Linux内核分析 - 网络[一]:收发数据包的调用

内核版本:Linux-2.6.34 网卡驱动:B4401 什么是NAPI NAPI是linux一套最新的处理网口数据的API,linux 2.5引入的,所以很多驱动并不支持这种操作方式。简单来说,NAPI是综合中断方式与轮询方式的技术。数据量很低与很高时,NAPI可以发挥中断方式与轮询方式的...

2018-01-17 11:21:02

阅读数:37

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭