- 浏览: 166806 次
- 性别:
- 来自: 深圳
最新评论
-
yuanzhongcheng:
都是废话,这些谁不知道啊,不是所有题都能靠以往的经验解决的,有 ...
数学思想方法揭秘-3(原创) -
maetrive:
很不错!
轻量流程引擎接口设计 -
maetrive:
很不错!
面向业务接口的业务事件交付 -
maetrive:
好文
事件驱动的轻量级流程引擎 -
liangzai_bj:
是我的配置有问题,我重新按博主的博客配置了下,不报错了!
hadoop hue开发调试环境搭建
文章列表
etcd是CoreOS开发的一个高可用的键值存储系统,主要用于共享配置和服务发现。它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。etcd目前的最新版本是2.2.0。
和zookeeper的二进制接口不同,它提供 ...
Golang中的协程
- 博客分类:
- 开发
协程(coroutine)是一种比线程更轻量级的并发执行单元,它的切换开销和内存栈的占用大小都比线程要小。只要内存足够,在一个线程中可有上万个或更多的协程。除了这些优点,对开发人员来说,在网络编程应用中,采用协 ...
DJI(大疆创新)http api服务网关
- 博客分类:
- 软件架构
DJI(大疆创新)http服务网关系统是用于对http服务进行治理的系统,支撑微服务的落地和开放平台open api的接入。支持跨多机房的服务路由,通过该系统可以对调用方进行身份认证、服务授权&鉴权、服务流控、服务降级、调用度量数据统计分析、服务依赖视图等。
整个系统架构如下图,分为三大部分:api网关、网关控制台、度量数据采集分析(这个未在图中体现)。
1.api服务网关
api服务网关是一个java web应用,域名:apigw.xxx.com。api服务网关类似企业应用集成中的ESB,为服务调用提供一个统一的访问点,支持服务流控和服务异常情况下的fail-fas ...
表数据更新语句类似:update 表名 set field1= value1,field2=value2 where 条件字段1=value3 and 条件字段2= value4;
在dao层,value1~value4一般是从一个vo值对象的属性中取值(不纠结于vo、po、bo、dto这些概念和区别,这里把dao层中的pojo也称为vo),这种方式存在的一个问题是:在这个vo对象中,不容易分辨出哪些属性用于set新值,哪些属性用于where条件中。
UpdateVoTemplate类
为了解决该问题,写了个vo类UpdateVoTemplate,该类具有两个属性vo对象: ...
http api服务治理框架
- 博客分类:
- 软件框架
公司的几个核心应用采用restful风格的服务接口对外提供服务,这些应用均采用Java spring mvc来实现rest服务,调用这些服务的消费者应用使用的语言则有多种,主要有php、python、Ruby、Java、C++、C#。
随着服务接口数量和消费者应用的增多,需要有一个rest服务治理框架来进行支撑,该服务治理框架提供的功能主要有:
服务注册和发现
负载均衡与容错
服务授权和鉴权
服务依赖关系管理
服务性能采集和监控
借鉴阿里dubbo框架,设计了公司的http api服务治理框架,整个架构如下。
...
c/c++字节序转换
- 博客分类:
- 网络编程
字节序(byte order)关系到多字节整数(short/int16、int/int32,int64)和浮点数的各字节在内存中的存放顺序。字节序分为两种:小端字节序(little endian)和大端字节序(big endian)。小端字节序:低字节存放在内存低地址,例如对两字节整数0x0100(十进制数256),低字节00放在低地址(假设地址为0x0041f880),高字节01放在高地址0x0041f881。大端字节序:高字节在低地址,同样是0x0100,高字节01放在低地址(假设地址为0x0041f880),低字节00放高地址0x0041f881。可见对相同的两字节整数,在不同字 ...
rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。
两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。
假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函数会只会被调用3次,每个分区调用1次。
hue系统后台主要使用 python语言,我们需要对 hue进行定制化二次开发。开发机操作系统为ubuntu12.04,使用独立的开发机器,小组其他人可共用。也可在自己平时使用的windows机器上开ubuntu虚拟机(如果机器配置较高),下面是hue开发环境的搭建过程。
1.独立的开发机上不能使用图形环境,需要在自己的windows机器上安装Xming xwindow server软件,下载地址http://sourceforge.net/projects/xming/。
安装后,修改安装目录中的X0.hosts,在其中增加一行,内容为开发机的ip地址。 ...
autoconfig使用
- 博客分类:
- 开发
1.autoconfig介绍 在一个Java应用中(例如web应用或包含main方法的其他应用)通常有很多参数需要配置,例如数据库ip和端口、用户名等,这些参数有的在二方库jar包中,有的在应用自身的war包或jar包中。这些参数的取值通常 ...
openstack keystone外部认证
- 博客分类:
- 云平台
1.keystone集成需求介绍
公司要搭建基于openstack的私有云平台,提供IAAS。私有云用户是公司员工,考虑到公司已经有一套单点登录认证系统,需要openstack的keystone身份认证服务能集成该认证系统。
keystone提供openstack的认证授权服务,它实现了OpenStack的Identity API,除此之外它还负责提供目录服务(提供服务的url)。keystone缺省提供基于用户名口令、LDAP等认证方式,此外还可开发python认证模块来提供其它的认证方式。
2.keystone外部认证流程
集成公司已有的认证系统需要使用到 ...
<<软件架构分解>>一文在IBM developerWorks中国网站发表后,得到较多外界关注,包括业界知名的InfoQ网站和多个其他网站的转载,阿里同学以及其他公司的同行也有兴趣做交流,具体见博文底部截图。
核心 ...
充血模型中的职责分配
- 博客分类:
- 分析设计
关于充血模型和贫血模型的讨论iteye上已经很多了,不是谁好谁坏的问题,都有适用的场景,业务复杂的当然可以使用充血模型,那些讨论几乎都是浪费口舌,也没说到点子上,讨论的话题应该是如何将业务逻辑合理分配到协作 ...
在《敏捷软件开发--原则、模式与实践》书中给出了多个OO设计原则,例如单一职责、开闭原则、依赖倒置原则等。在这些原则中,绝大多数都很容易理解,最难理解的恐怕算开闭原则(对扩展开放,对修改关闭),主要 ...
面向业务接口的业务事件交付
- 博客分类:
- 流程引擎
在轻量流程引擎接口设计中提到触发业务事件需要调用事件的deliver方法来触发并交付业务事件,流程引擎最终会调用业务服务组件的事件处理方法,例如对买家确认收货事件,会调用收货组件的确认收货方法。采用这 ...
轻量流程引擎接口设计
- 博客分类:
- 流程引擎
接上文,业务应用和流程引擎之间以及流程引擎和业务服务组件之间通过良好定义的接口进行交互。
业务应用和流程引擎之间的接口称为北向接口,流程引擎和业务组件之间的接口称为南向接口,流程引擎的其他接口如管理接口在此忽略。
1.北向接口
北向接口主要是事件引擎提供的面向业务应用的接口(我们的事件引擎是一个简单的事件引擎,用来接收事件、派发和管理事件。业务复杂后可采用复杂事件处理CEP),主要是事件通道(EventChannel)和业务事件。
事件通道是事件引擎提供的接口,用来接收业务应用的业务事件,业务应用通过事件通道交付业务事件。
业务事件分为同步事件和异步事件。业务应 ...