- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 架构师进阶之五常用的策略模式,太多if ese语句优化方案
引入 以前在编码中,遇到过下面的情况,根据设备类型,调用不同的Converter转换类。最初代码如下: if(type1){ convert1(); } else if(type2){ convert2(); } else if(type3){ convert3(); } 如果增加类型,需要修改代码,增加if else逻辑。我当时感觉代码ugly,所以用了一个map,映射...
2019-02-27 13:27:27 807
原创 架构师进阶之四redis实现分布式锁redission
1. setNX实现方式 一般的setNX实现方式,在设置key之后,需要设置超时时间,防止死锁。另外设置key和设置超时必须是一个原子操作。 这种方式缺点: 1.1 Fail over 因为是把key写到master 节点,无论是主从结构还是cluster集群模式,存在failover的时候,key丢失的问题。 1.2 不可重入 如果业务多个地方需要用一个key,可能死锁,尤其是一...
2019-02-25 16:33:08 2157
原创 架构师进阶之三Zookeeper,Mesos以及Marathon
1.Mesos Apache Mesos是一个集群管理器,可跨分布式应用程序或框架提供有效的资源隔离和共享。它位于应用程序层和操作系统之间,可以更加轻松地在大规模集群环境中更有效地部署和管理应用程序。它可以在动态共享节点池上运行许多应用程序 Apache Mesos将CPU,内存,存储和其他计算资源从机器(物理或虚拟)中抽象出来,使容错和弹性分布式系统能够轻松构建并有效运行。 ZookerKe...
2019-02-20 18:09:36 1623
原创 架构师进阶之二函数式编程和面向对象编程
什么是函数式编程 简单来说:面向对象编程各个模块之间相互依赖,好比流水线生产模式,互相依赖状态,共享数据等等。而FP编程则互相独立,没有任何依赖。 因此:FP编程,模块化程度更高,更容易测试,代码也更简洁,比如下面数组遍历的例子。因为模块化程度高,所以FP编程往往是声明式编程,调用现有的函数,你只是需要声明你要做什么,不需要编写具体的step代码。 由于FP编程模块化程度高,所以适用于并行编...
2019-02-20 11:47:11 489
原创 架构师进阶之一消息中间件RabbitMQ和Kafka比较
为什么需要消息中间件 异步任务处理 系统解构,微服务直接解耦通信的一种方式,不关心系统语言编码实现 流量削峰 常用的MQ技术 1. RabbitMQ 1. 1 基于Erlang语言开发。 Erlang是一种面向并发(Concurrency Oriented),面向消息(Message Oriented)的函数式(Functional)编程语言。面向并发技术关键点意味着线程切换成本要低。...
2019-02-15 12:11:58 661
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人