随笔分类 -  architecture&framework

1
Architecture Design & framework
摘要:一个软件项目从探索阶段到发展方向明确阶段,会经历从简单到复杂的一个过程,需求的不断叠加,会让系统越来越庞大,功能繁多,公司业务的扩展也让软件系统的生命周期变的更长。在业务变复杂软的过程中,各种原因的驱使,代码质量会退化,维护和开发新功能的成本也会相应的变高,推倒重新开发的成本也是高的吓人。 代码质量 阅读全文
posted @ 2022-01-10 09:55 li-peng 阅读(9769) 评论(22) 推荐(29)
摘要:公司对底层基础库进行了重构,线上稳定跑了几天,在查看订单系统的log时,有几条error信息非常的奇怪, orderID:80320180 statemachine error: no event [Revoked] at current state [Paid] orderID:81983045 阅读全文
posted @ 2021-11-30 10:00 li-peng 阅读(1777) 评论(2) 推荐(3)
摘要:唯一ID算法Snowflake相信大家都不墨生,他是Twitter公司提出来的算法。非常广泛的应用在各种业务系统里。也因为Snowflake的灵活性和缺点,对他的改造层出不穷,比百度的UidGenerator、美团的Leaf、索尼的Sonyflake等等。这篇帖子主要是讲一下原生的Snowflake 阅读全文
posted @ 2019-12-31 14:27 li-peng 阅读(3185) 评论(0) 推荐(5)
摘要:"剖析nsq消息队列 目录" 在上一篇帖子 " 剖析nsq消息队列(一) 简介及去中心化实现原理 " 中,我介绍了nsq的两种使用方式,一种是直接连接,还有一种是通过nslookup来实现去中心化的方式使用,并大概说了一下实现原理,没有什么难理解的东西,这篇帖子我把 实现去中心化的源码和其中的业物逻 阅读全文
posted @ 2019-09-18 11:49 li-peng 阅读(2510) 评论(0) 推荐(1)
摘要:"剖析nsq消息队列 目录" 分布式消息队列 "nsq" ,简单易用,去中心化的设计使 更健壮, 充分利用了 语言的 和`channel nsq`的源码分析给大家看。 主要的分析路线如下 分析 的整体框架结构,分析如何做到的无中心化分布式拓扑结构,如何处理的单点故障。 分析 是如何保证消息的可靠性, 阅读全文
posted @ 2019-08-30 15:14 li-peng 阅读(7328) 评论(0) 推荐(2)
摘要:阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力。 之前的帖子说了一下 "微服务的雪崩效应和常见的解决方案" ,太水,没有上代码怎么叫解决方案。 上有很多开源的库来解决 ,比较出名的是 的开源库 "hystrix" 。集 、`熔断 容错 java 阅读全文
posted @ 2019-06-19 12:28 li-peng 阅读(5561) 评论(3) 推荐(1)
摘要:微服务化产品线,每一个服务专心于自己的业务逻辑,并对外提供相应的接口,看上去似乎很明了,其实还有很多的东西需要考虑,比如:服务的自动扩充,熔断和限流等,随着业务的扩展,服务的数量也会随之增多,逻辑会更加复杂,一个服务的某个逻辑需要依赖多个其他服务才能完成。一但一个依赖不能提供服务很可能会产生 ,最后 阅读全文
posted @ 2019-06-10 13:21 li-peng 阅读(11044) 评论(3) 推荐(8)
摘要:"go微服务框架go micro深度学习(一) 整体架构介绍" "go微服务框架go micro深度学习(二) 入门例子" "go微服务框架go micro深度学习(三) Registry服务的注册和发现" "go微服务框架go micro深度学习(四) rpc方法调用过程详解" "go微服务框架g 阅读全文
posted @ 2019-03-13 11:44 li-peng 阅读(5761) 评论(2) 推荐(3)
摘要:"github 例子地址" "上一篇写了一下rpc调用过程的实现方式" ,简单来说就是服务端把实现了接口的结构体对象进行反射,抽取方法,签名,保存,客户端调用的时候go micro封请求数据,服务端接收到请求时,找到需要调用调用的对象和对应的方法,利用反射进行调用,返回数据。 但是没有说stream 阅读全文
posted @ 2019-03-11 14:02 li-peng 阅读(3658) 评论(3) 推荐(1)
摘要:上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取server的地址信息,就可以和服务建立连接,然后就可以进行通信了。这篇帖子详细说一下,go-micro的通信协议、 阅读全文
posted @ 2019-02-18 10:57 li-peng 阅读(10274) 评论(2) 推荐(7)
摘要:服务的注册与发现是微服务必不可少的功能,这样系统才能有更高的性能,更高的可用性。go-micro框架的服务发现有自己能用的接口Registry。只要实现这个接口就可以定制自己的服务注册和发现。 go-micro在客户端做的负载,典型的Balancing-aware Client模式。 服务端把服务的 阅读全文
posted @ 2018-10-08 19:47 li-peng 阅读(12603) 评论(2) 推荐(3)
摘要:上一篇帖子简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层。更详细更具体的调用流程和细节,会在以后的帖子里详细讲解。 例子的github地址: gomicrorpc 跑一遍 阅读全文
posted @ 2018-09-10 15:18 li-peng 阅读(26096) 评论(14) 推荐(2)
摘要:产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身。项目微服务化,松耦合模块间的关系,是一个很好的选择,随然增加了维护成本,但是还是很值得的。 微服务化项目 阅读全文
posted @ 2018-09-03 15:17 li-peng 阅读(21651) 评论(4) 推荐(10)
摘要:nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好。以后 阅读全文
posted @ 2018-03-05 09:34 li-peng 阅读(470) 评论(0) 推荐(0)
摘要:Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。 环境 我是用了两台centos7的虚拟机来做这个教程他们的ip分别是 这篇帖子中所有的代码 github地址:htt 阅读全文
posted @ 2017-12-29 16:04 li-peng 阅读(15699) 评论(1) 推荐(3)
摘要:node.js是单线程的应用程序,但是他可能通过event和callback来支持并发。所有的node.js都是单线程的,也是异步的,他们使用调用异步函数来维持高并发。Node使用观察者模式。Node的线程会保持一个事件循环,当有任务完成时,他会触发相应的事件,通知事件监听函数执行。 事件驱动程序 阅读全文
posted @ 2017-08-16 21:21 li-peng 阅读(735) 评论(0) 推荐(1)
摘要:1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 机器上。使用Docker可以让每个应用彼此相互隔离,在同一台机器上同时运行多个容器,他们彼此之间共享同一个操作系统。Docker的优势在于,它可 阅读全文
posted @ 2016-08-31 16:42 li-peng 阅读(1675) 评论(1) 推荐(7)
摘要:每一个业务系统都会根据业务需要配置各种各样的权限,实现方式也是千差万别,各有各的优缺点。今天我们 利用反射来做一个小的权限管理Demo。也可以说是插件化的权限管理,通用的插件化框架是实现一个接口或者协定, 我们的做法是先展示指定的数据,再去动态的加载需要用到的dll和功能。 大致的思路是这样的,我们 阅读全文
posted @ 2016-07-12 13:03 li-peng 阅读(2207) 评论(3) 推荐(5)
摘要:Caliburn.Micro学习笔记(一) 引导类和命名匹配规则 Caliburn.Micro学习笔记(二) Actions Caliburn.Micro学习笔记(三) 事件聚合IEventAggregator和 Ihandle<T> Caliburn.Micro学习笔记(四) IHandle<T> 阅读全文
posted @ 2014-09-22 11:48 li-peng 阅读(2834) 评论(0) 推荐(1)
摘要:当我们用MVVM的时候要实现INotifyPropertyChanged,如果你是基于.net4.5以下的framework(.net4.5已有新特性我这里就不说了) 你很可能会这么写 这样的写法很可能会造成硬编码错误 你是不是有点烦每次要写一个字段还要写一个属性还要加上OnPropertyChan 阅读全文
posted @ 2013-07-03 17:03 li-peng 阅读(4584) 评论(16) 推荐(5)

1