Author: admin

浅谈复杂业务系统的架构设计 | 京东云技术团队

作者:京东科技 皮亮

1. 什么是复杂系统

image.png
我们经常提到复杂系统,那么到底什么是复杂系统。我们看下维基的定义:复杂系统(英语:complex system),又称复合系统,是指由许多可能相互作用的组成成分所组成的系统。强调了两点:

  1. 由点组成
  2. 点之间有各种关联

image.png

两点的规模和复杂性直接决定了系统的复杂程度。比如就拿我们的电商系统举例,分成很多部分,商品、库存、采购、订单、物流、财务,这个只是大的分类,还有针对 C 端的营销、会员、购买、售后等体系,针对 B 端的商家入驻、管理等体系。各个部分、体系之间有着千丝万缕的联系,可谓之复杂系统了。当然了,远远不止这些,随着业务复杂性的不断提升,整个系统的复杂性也会愈来愈复杂。

2. 什么是架构

image.png

生活中我们经常谈及 “架构”,那么到底什么是 “架构”,Robert C.Martin《架构整洁之道》中的定义:软件架构是指设计软件的人为软件赋予的形状,这个形状是指系统如何被划分为组件 (Components),各个组件如何排列(Arrangement),组件之间如何沟通(Communication,通讯),维基百科的定义:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计,IEEE 的定义:架构 = 组成单元的结构 组成单元的关系 原则和指南,总体来看会包括几个内容:

  1. 整体:强调部分的组成,强调合力
  2. 规则:强调部分之间有关联关系,有规则,有约束
  3. 通信:强调部分之间有往来,有交互

这样说来,我们人类社会本身就是一个社会架构,各种职责、分工、圈层,就我们的软件系统来说,DDD 是架构,MVC 也是架构,大数据设计也有大数据的架构。所以架构无处不在,好的架构能够对特定的问题,特定的领域起到规范和指导作用。

3. 架构的本质

image.png

我们知道,架构这个词是源于建筑行业的,英文原词是:Architecture,维基百科上的解释是规划、设计和建造建筑物的过程及产物。那我们就用建筑行业来理解一下。建房子对大家而言再熟悉不过了,那我们盖个小平层、盖个两层小高层、盖个 5 层小高层、搞个 10 层、盖个几百层的摩天大楼的过程、因素、风险是完全不同的。盖摩天大楼需要付出的成本更高,过程中的不确定性更多,挑战和风险也更大,例如如何选地、选择什么样的结构,如何承重,采光如何控制,优化、如何取暖,如何上水、排水,如何通风,如何避震等等。这些东西我们考虑的越多,房子未来的质量,可控性也会越好。

所以架构本质上就是一种指导型的约束,以约定整体和部分、部分和部分之间的关系,以使整体更加稳定,更加可靠。

image.png

4.

GIT常用命令解析

术语

  • 工作区 /work tree
    仓库所在的文件夹叫做工作区,就是你在电脑里能看到的目录。
  • 暂存区
    也就是在 git add 之后,git commit 之前的缓冲区,一般在.git/index 文件中。
  • 仓库
    git commit 之后,根据暂存区的文件生成一个 commit id, 暂存区的文件归档到仓库中,一般在.git/objects 里面

git

# 输出git版本信息
$ git -v
git version 2.38.1.windows.1

# 输出常用的命令列表

Nginx全配置解析

#==========================nginx全局配置==========================#
# 指定 nginx 进程运行的用户,这里是 nginx,默认为nobody。
user nginx;  

# 指定 nginx 使用多少个 worker 进程处理请求,这里使用了 auto,表示根据 CPU 核心数自动分配。
worker_processes auto;  

# 指定 nginx 主进程的 PID 文件路径。
pid /run/nginx.pid;  

#指定错误日志文件的路径
error_log /var/

网址的url结尾应该不应该带斜杠

网址的url结尾应该不应该带斜杠

带与不带斜杠"/"是不同的网址.

特别是相对url,

如果 你访问https://www.p2hp.com/about  ,里面有个<a href="info">info</a>,则它将链接到https://www.p2hp.com/info.

而如果你访问https://www.p2hp.com/about/(一般返回同样的内容),则里面的<a href="info">info</a>,将链接到https://www.p2hp.com/about/info.

 

但根目录带不带/是一样的

如:http://www.p2hp.com 和http://www.p2hp.com/ 是一样的.

 

已测试.

 

参考:

https://blog.cdivilly.com/2019/02/28/uri-trailing-slashes

https://stackoverflow.com/questions/5948659/when-should-i-use-a-trailing-slash-in-my-url

https://www.cloudways.com/blog/trailing-slashes-urls/

https://ahrefs.com/blog/zh/trailing-slash/

 

 

        

关于chatGPT的一切(实用工具篇)

今年2月份的时候,当大家刚开始火热地讨论chatGPT时,说实话我是没啥感觉的[笑cry],毕竟我是看着GPT-2一路走过来的。但是当GPT的API大规模开放之后,大家开始疯狂基于GPT模型开发插件时,各种脑洞确实吓到我了!我从来没设想过,通过套娃和拼接实现的Auto-GPT,babyAGI,hugging-GPT的这些组合模型,居然能够直接摸到通用人工智能(AGI)的下限。…