后端技能
奔奔奔跑
这个作者很懒,什么都没留下…
展开
-
Golang领域模型-实体
前言: 实体具有业务属性、业务逻辑和业务行为,是是实实在在的业务对象。在事件风暴中,我们可以根据命令、操作与事件将业务上紧密结合在一起的多个实体与值对象进行聚合形成聚合根。实体是什么虽然数据库的设计占据了主导地位(这个是没错的),但开发者也不应该只关注数据,而且要关注模型。数据+行为= 模型,实体就是含有领域概念的模型。它是一个唯一的东西,在相当长的时间里数据状态在持续地变化,并且一定有唯一键,这区别于值对象。注意的是如果非要用表结构里的一条含有主键的数据去理解实体也是可以的,但不少情况下可能是有多个表原创 2020-08-23 15:23:30 · 696 阅读 · 0 评论 -
Golang领域模型-六边形架构
前言: 六边形架构又称“端口适配器架构”,实际上也是一种分层架构,只不过由上下或者左右变成了内部与外部。其核心理念就是应用通过端口与外部进行交互的。核心的业务逻辑(领域模型)与外部资源(数据库等资源)完全隔离,仅通过适配器进行交互,解决了业务逻辑与用户数据交错的问题,很好的实现了前后端分离。困惑:在分层架构中是否困惑过某些逻辑处理或某些数据处理该放在哪一层?在分层架构中是否困惑过该分多少层?在分层架构中是否困惑过平层和跨层调用是否合理?六边形架构Alistair Cockburn 提出了一种原创 2020-08-22 10:33:47 · 1216 阅读 · 0 评论 -
Golang领域模型-开篇
前言: 八叉树是一位拥有数十年编程经验,醉心于代码艺术的工程师。freedom是他结合《实现领域驱动设计》与《六边形架构》两文为一众Gopher打造出最符合DDD战术设计的轮子!DDD是什么?领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水道隔三差五就堵了?某一户跳闸了导致整个楼都停电了?那么盖楼前是否有好的原创 2020-08-10 21:16:43 · 465 阅读 · 0 评论 -
go pprof:一次成功的定位与失败的复现
**背景:**一次大几万人的线上抢购活动,突然出现了问题,页面半天打不开,打开了半天下不了单,cpu涨了又跌跌了又涨,而内存使用又稳如老狗!不要慌,按照套路去分析问题,一切都不是问题!阅读此文你将收获:分析问题的一个思路!学会使用pprof定位问题。解决问题的一个思路!大纲:我是如何定位问题的如何通过pprof精准定位通过pprof来定位代码我是如何trouble shoo...原创 2020-07-07 17:07:33 · 3597 阅读 · 0 评论 -
MongoDB从入坑到入迷
**背景:**我司是一家正处于高速发展,目前拥有数百万用户,年销售额近五十亿的社交电商公司。公司技术部建立之初,为了适应用户量的高速增长,与业务的不断变更迭代,在选用数据库的时候,经过调研对比我们选择了MongoDB!是的,你没看错,All in MongoDB!全文大纲:为什么使用MongoDB(选择数据的时候我们是怎么考虑的?)MongoDB架构(99.99%高可用,晚上安心睡大觉!)MongoDB 分片(海量数据应对之道!)MongoDB文档模型介绍(灵活!灵活!灵活!)1. 为什么原创 2020-05-16 10:52:36 · 369 阅读 · 0 评论 -
跟我一起源码阅读之gRPC开篇
**前言:**很多程序员都知道,通过学习优秀的开源框架可以很大程度上解锁更多编码姿势和花样。但是没有目的,没有方法的去阅读开源项目,很容易就被庞大繁杂的代码给迷晕了!那么该如何以正确的姿势去阅读开源项目呢?请各位看官品鉴此文,跟我一起庖丁解牛,来阅读gRPC框架吧!阅读此文你将收获:了解什么是RPC了解该如何以正确的姿势阅读源码以gRPC为例来试验该如何阅读源码大纲什么是RPC...原创 2020-03-24 09:06:21 · 255 阅读 · 0 评论 -
从网络IO看高性能框架
前言: 我是一名golang后端开发工程师,不是Java,也不是拍黄片,对,就是那个号称原生支持高并发的“够浪!”。那为什么go能支持高并发?原生支持高并发又是何解?跟着我,一起探讨一下所谓的高并发是怎么回事…阅读本文你将收获:知道框架高性能的根本原因了解进程,线程切换开销在哪里熟悉阻塞与非阻塞IO,同步与异步调用的区别大纲:讨论一个高性能框架甚至语言的时候,我们在讨论什么?三...原创 2020-02-01 18:01:04 · 597 阅读 · 0 评论