在调研中,持续更新本篇 …
架构
Tracing核心概念此处只介绍使用中会遇到的概念,具体细节请查阅文档
API
TracerProvider 提供访问 Tracer 的入口。作为一个池子放置和管理 Tracers
Span Exporter 定义一系列接口,执行 telemetry data 的序列化与反序列化,以将数据提交到不同的 backend。
应用
Tracing根据其架构设计,所有的应用都可以实现为:
定义 Resource
创建 Provider
设置全局 Provider (option)
设置 Exporter (option)
server 中使用 Traci...
DDD 关键概念Domain 中的概念Context一个Domain独占一个Context。在Context中完成下述的一系列逻辑。在应用DDD中,最难的一步是,划定Context。将不同Domain的边界准确的描述清楚,对于抽象能力、业务理解准确性与未来预期的判断能力要求极高。边界划定的不好,也将难以保障内聚与耦合的合理性。
Aggregate、Entity、Value Object将三者放在一起,是因为三者是一个包含关系,并对上层提供引用。在这些model中,会提供独占的attribute以及对应的对attribute的访问方法。
Service对于一些无法由一个model完成执行的...
MVC与DDD比较(2022.05.23)MVC与DDD其实并不是对立的。在MVC中,我们会在controller中执行一些校验逻辑,包含可能的鉴权、参数校验等。我们也会在view里面实现service,包含各种validator与serializer以及data transfer。
DDD拆解并丰富了MVC中的M,将一些在V中执行的逻辑迁移到M中,由domain model执行model内的业务处理,同时将DTO从M中剥离出来放到infrastructure中,借由其他的设计模式如repository或者CQRS等进行处理。
同时,DDD中依然会有一些业务操作无法在model中完成,这...
commit message format提交格式12345<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>
type
build:对构建系统或者外部依赖项进行了修改
ci:对CI配置文件或脚本进行了修改
feature:增加新的特征,一般指的是大的变更
func: 增加新的功能,一般指小的功能
fix:修复bug
impr: improvement,小的代码设计改进
conf: 仅配置变化,Spring配置、propert...
题记想写这篇文章,是因为在某平台看某用户的一篇文章,想了解一下作者的背景,进而看到其在一些回答中与评论者争吵的情况。其实技术水平高低本身是受很多情况影响的,评价一个人也不是一维的。事实上,没有任何标准可以真正的评价一个人。技术讨论和技术辩论是受欢迎的,因为大家技术水平不在一个等级而无法正常的讨论进而主动拒绝讨论本身也是可以接受的。黑一门技术,则显得狭隘了。
为了调解自己的思想,再一次阅读了《黑客与画家》“守口如瓶”这一章,并分享一些感悟。
自由的思考自由的思考,强调的是,不要轻易的被各种论断影响。我们需要去思考一个论点的论证逻辑,了解其论据是否足够充分。信息时代,我们每天都会从各种渠道接...
什么是广度与深度想要想做一名架构师的同学,大都会听到一句话:“一名架构师要有技术的广度与深度”。很多同学在跟hr交流的时候,或者跟领导、行业大佬交流的时候,也经常会听到这样的建议:“要做一名T/π型人才”。
那么,广度要怎么理解,深度又要怎么理解呢。我们掌握了一些知识或者信息,需要达到一个什么程度,算是覆盖了广度,或是达到了深度。
我个人的感受是,当我们对知识、信息达到了,
能够理解其中的原理与逻辑,同时能够自己进行复述,则算是达到了广度的覆盖
能够机遇已有的信息,思考其深层次的逻辑,举一反三的实践或思考总结,并能达到一定效果,则算是深度的掌握。
我们每天会浏览五花八门的信...
前言架构设计与编码,是为了解决问题,是一套解决方案。当我们在设计架构和代码开发的时候,有一份相对应的设计文档,可以有效且快速的让团队更好的理解在解决的问题,以及方案的设计思路。
为什么要写设计文档
要解决的问题是什么需要用文档先介绍清楚
有些问题使用一份设计文档描述思路已经足够
解决方案的选择(decision)是权衡的结果,我们不仅需要了解结果,也需要知道结果产生的原因,即权衡的过程。只有记录下权衡的过程,在后续偿还技术债的时候,才可以更方便的理解产生的原因或初衷,并有更充分的执行架构演进的依据
让团队成员对问题和设计有一个共识
设计文档核心内容基于以上原因,我们也可以推论出,设计文...
10倍的产品改进《从0到1》介绍了一款产品的推出,如果只是2-3倍的改进,可能可以在一开始吸引用户去使用。如果产品所属的市场价值极大,2-3倍的改进会引来一大群竞争者轻易的介入,这将使得产品在后续的迭代中疲于与其他竞争者斡旋,而丢失了让产品变得更好的目标。如果产品的市场价值有限,那么产品能带来的收益也有限,投入的成本也将有限,并很难再继续做大。事实上,有相当一部分产品的推出,比原来的产品带来的改进少于其带来的麻烦。这样的产品,基本很难吸引到用户。俞军提出的产品价值公式可以很好诠释这一点,即新产品价值 > 旧产品价值 + 迁移成本,这样的新产品才有可能成功。
一款产品想要在推出的时候...
持续更新关于python并行计算与异步计算的包,后续再根据篇章拆分。
Python 并行并行库threadingmultiprocessing
multiprocessing 中的一些问题问题
开启子进程的方法与问题 spawn相比fork会更耗时,但是fork在处理一个多线程的进程时可能会陷入死锁等问题。这是由于fork本身的机制造成的。这也使得在使用包的过程中常常遇到一些问题。
IO问题 fork本身会继承打开文件的描述符,所以对于多进程的处理,要留意IO处理带来的不良影响建议由于使用多进程更多是因为,CPython本身的GIL造成无法使用多个CPU核,而使用多进程的方式进行处理...
框架报错源码解析
exception 处理器
1234567891011121314151617181920212223242526272829303132# rest_framework.views 71-101def exception_handler(exc, context): """ Returns the response that should be used for any given exception. By default we handle the REST framework `APIException`, and...