最新 | 最热门 | 最高评价

+0  kubernetes网络相关总结

Kevin Lynx 发于 2018年04月01日 08:00 | 点击: 461 | 展开摘要
要理解kubernetes的网络模型涉及到的技术点比较多,网络上各个知识点讲得细的有很多,这里我就大概梳理下整个架构,方便顺着这个脉络深入。本文主要假设kubernetes使用docker+flannel实现。

整体上,了解kubernetes的网络模型,涉及到以下知识:

linux网络及网络基础

docker网络模型

kubernetes网络需求,及flannel网络实现

最后大家就可以结合实例对照着学习。

Linux网络

先看几个概念,引用自Kubernet

查看全文: http://www.udpwork.com/item/16763.html

+0  使用Kubeadm在CentOS部署Kubernets 1.8.7

Kevin Lynx 发于 2018年03月08日 00:00 | 点击: 450 | 展开摘要
主要参考:

官方文档

如何在国内愉快的安装 Kubernetes

kubernetes 1.8.7 国内安装(kubeadm)

建议都大致浏览下。这里我也是简单地记录,估计每个人遇到的细节问题不一样。

环境准备

我拿到手的环境docker已经ready:

docker (alidocker-1.12.6.22)

CentOS 7

上面博客提到的一些系统设置可以先做掉:

1
2
3
4
5

cat <<EOF > /etc/sysctl

查看全文: http://www.udpwork.com/item/16709.html

+0  基于Yarn的分布式应用调度器Slider

Kevin Lynx 发于 2018年01月24日 00:00 | 点击: 546 | 展开摘要
Apache Hadoop Map-Reduce
框架为了解决规模增长问题,发展出了yarn。而yarn不仅解决Map-Reduce调度问题,还成为了一个通用的分布式应用调度服务。yarn中的一个创新是把各种不同应用的调度逻辑拆分到了一个称为Application
Manager(以下简称AM)的角色中,从而让yarn自己变得更通用,同时解决调度性能问题。Apache
Slider就是这其中的一个AM具体实现。但Slider进一步做了通用化,可以用于调度长运行(long-ru

查看全文: http://www.udpwork.com/item/16629.html

+0  Python协程greenlet实现原理

Kevin Lynx 发于 2018年01月17日 00:00 | 点击: 523 | 展开摘要
greenlet是stackless
Python中剥离出来的一个项目,可以作为官方CPython的一个扩展来使用,从而支持Python协程。gevent正是基于greenlet实现。

协程实现原理

实现协程主要是在协程切换时,将协程当前的执行上下文保存到协程关联的context中。在c/c++这种native程序中实现协程,需要将栈内容和CPU各个寄存器的内容保存起来。在Python这种VM中则有些不同。例如,在以下基于greenlet协程的python程序中:

1

查看全文: http://www.udpwork.com/item/16617.html

+0  写了一个棋牌游戏服务器框架

Kevin Lynx 发于 2017年12月12日 00:00 | 点击: 566 | 展开摘要
最近业余时间写了一个棋牌游戏服务端框架:pigy。对于棋牌游戏服务端框架,我的定义是:

分布式的

包含网络棋牌游戏中包括登陆、大厅、游戏框架、数据持久化等基础组件

提供具体游戏框架,游戏逻辑程序员可以基于这个框架focus在游戏的开发上

写得差不多的时候,我在网上搜索了下,发现棋牌游戏源码已经烂大街,自己精力有限,也没有心思和动力去研究现有实现的优缺点而做出一个更好的替代。所以我这份实现仅作为一个demo放出来让大家开心下好了。

pigy基于skynet实现。之所以

查看全文: http://www.udpwork.com/item/16537.html

+0  协程并发模型及使用感受

Kevin Lynx 发于 2017年12月03日 00:00 | 点击: 649 | 展开摘要
协程可以简单理解为更轻量的线程,但有很多显著的不同:

不是OS级别的调度单元,通常是编程语言或库实现

可能需要应用层自己切换

由于切换点是可控制的,所以对于CPU资源是非抢占式的

通常用于有大量阻塞操作的应用,例如大量IO

协程与actor模式的实现有一定关系。由于协程本身是应用级的并发调度单元,所以理论上可以大量创建。在协程之上做队列及通信包装,即可得到一个actor框架,例如python-actor

最近1年做了一个python项目。这个项目中利用gevent

查看全文: http://www.udpwork.com/item/16520.html

+0  实现一个memcache proxy

Kevin Lynx 发于 2017年05月18日 00:00 | 点击: 546 | 展开摘要
通常我们会使用多台memcached构成一个集群,通过客户端库来实现缓存数据的分片(replica)。这会带来2个主要问题:

memcached机器连接数过多

不利于做整体的服务化;缺少可运维性。例如想对接入的客户端做应用级隔离;或者对缓存数据做多区域(机房)的冗余

实现一个memcache proxy,相对于减少连接数来说,主要可以提供更多的扩展性。目前已经存在一些不错的memcache proxy,例如twitter的twemproxy,facebook的mcrou

查看全文: http://www.udpwork.com/item/16270.html

+0  Xmemcached源码阅读

Kevin Lynx 发于 2017年04月23日 00:00 | 点击: 685 | 展开摘要
Xmemcached 是一个memcached客户端库。由于它提供的是同步API,而我想看下如何增加异步接口。所以就大致浏览了下它的源码。

主要结构

针对memcache客户端的实现,主要结构如下:

XMemcachedClient 是应用主要使用的类,所有针对memcache的接口都在这里

Command 用于抽象二进制协议或文本协议下各个操作,这里称为Command。CommandFactory 用于创建这些command

MemcachedSessionLoc

查看全文: http://www.udpwork.com/item/16224.html

+0  XNIO源码阅读

Kevin Lynx 发于 2017年04月09日 00:00 | 点击: 1116 | 展开摘要
XNIO是JBoss的一个IO框架。最开始我想找个lightweight servlet container库,于是看到了undertow,发现其网络部分使用的就是XNIO。所以干脆就先把XNIO的源码读下。

XNIO文档非常匮乏,能找到都是3.0的版本,而且描述也不完全。Git上已经出到3.5.0。我读的是3.3.6.Final。

使用方式

可以参考SimpleEchoServer.java,不过这个例子使用的API已经被deprecated,仅供参考。使用方式大致为

查看全文: http://www.udpwork.com/item/16205.html

+0  实现JVM中的JIT

Kevin Lynx 发于 2017年03月09日 00:00 | 点击: 513 | 展开摘要
在JVM中,JIT (Just-in-Time) 即时编译指的是在Java程序运行过程中JVM优化部分指令为本地指令,从而大幅提升性能。在上一篇文章写一个玩具Java虚拟机中实现了一个基本可以运行Java字节码的JVM。本篇文章描述我是如何在这个玩具JVM中实现JIT的。

推荐文章“How to JIT - an introduction”,介绍了JIT的基本实现原理。作者把JIT分为两个阶段:

运行期生成机器代码(本地指令)

执行机器代码



查看全文: http://www.udpwork.com/item/16170.html

+0  写一个玩具Java虚拟机

Kevin Lynx 发于 2017年02月25日 00:00 | 点击: 668 | 展开摘要
本文描述了一个用Java实现的玩具JVM,用Java实现的好处是可以不用处理JVM中的垃圾回收。

Java虚拟机是基于栈的虚拟机。栈虚拟机的特点是所有临时操作数都存放在栈中。编译器生成的指令都会围绕着这个栈展开,相对而言,解释执行这些指令会比较容易。基于栈的虚拟机可能会生成如下指令:

1
2
3

push 3 # 把立即数3压栈
push 4 # 把立即数4压栈
add # 从栈中弹出两个操作数进行相加,结果压回栈中

Java .class文件存储的

查看全文: http://www.udpwork.com/item/16147.html

+0  RequireJS最简实现

Kevin Lynx 发于 2017年02月05日 00:00 | 点击: 832 | 展开摘要
网上有不少解析RequireJS源码的文章,我觉得意义不大。阅读源代码的目的不是为了熟悉代码,而是为了学习核心实现原理。相对RequireJS的源码,kitty.js的实现更简单,更容易理解。本文正是抄了kitty.js的实现,是一个更精简的RequireJS,用于理解RequireJS的实现原理。

github dummy-requirejs。这个实现仅支持核心feature:

1
2

require(deps, callback) // deps 是依赖数组
def

查看全文: http://www.udpwork.com/item/16088.html
|<<<1234567>>>| 一共14页, 160条记录