
架构
文章平均质量分 93
yinghe_one
旨在发现全球技术深度好文,拒绝热点浮躁浅文,对于外文,受限于鄙人英语水平和效率,都采用AI机器翻译,如果觉得翻译不好,可以直接看原文。
展开
-
基于大中台架构的电商业务中台最佳实践之一:业务中台总体架构介绍
架构总原则:大中台+小前端的架构思路业务中台采用领域驱动设计(DDD),在其上构建业务能力SAAS,持续不断进行迭代演进。平台化定位,进行了业务隔离设计,方便一套系统支撑不同玩法的业务类型和便于定制化扩展。前后端分离,通过服务接入层进行路由适配转发。天然的分库分表,消息解耦和分布式缓存设计,支持弹性扩容,以支持大数据高并发场景。系统逻辑架构图:接下来将分别介...原创 2018-10-18 13:59:04 · 46245 阅读 · 4 评论 -
如何成为更好的软件开发人员
英文原文:https://medium.com/devtrailsio/how-to-become-a-better-software-developer-dd16072c974e今天,我想分享一些关于软件开发人员如何提高他们的专业技能并在工作中变得更好的想法。这里提出的主题是通用的,并不是特定于任何技术堆栈。就此而言,其中大部分都不是特定于IT的。这些是关于如何发展您的个人特征,改善与同事和...翻译 2019-01-13 10:14:56 · 1286 阅读 · 0 评论 -
Java的API设计实践
Introduction了解在设计Java API时应该应用的一些API设计实践。通常,这些实践很有用,并确保API可以在模块化环境中正确使用,例如OSGi和Java平台模块系统(JPMS)。有些做法是规定性的,有些则是禁止性的。当然,其他良好的API设计实践也适用。OSGi环境使用Java类加载器概念提供模块化运行时强制类型可见性(visibility)的封装。每个模块都有自己的类加载器...翻译 2019-01-19 21:28:36 · 1753 阅读 · 0 评论 -
我如何用57行代码复制一个价值8600万美元的项目
当使用现有开源技术的实验做“足够好”的工作时维多利亚警察局是澳大利亚维多利亚州的主要执法机构。去年维多利亚州有超过16,000辆汽车被盗 - 耗资约1.7亿美元 - 警察部门正在试验各种技术驱动的解决方案,以打击汽车盗窃行为。他们称这个系统为BlueNet。为了防止被盗车辆的欺诈性销售,已经有一项VicRoads 基于网络的服务,用于检查车辆登记的状态。该部门还投资了一个固定式车牌扫描仪 ...翻译 2019-01-14 23:32:33 · 1389 阅读 · 0 评论 -
在物联网设备,边缘和云上分配机器学习算法
在设计新的物联网系统时,需要进行许多权衡,以确定在系统的不同组件(设备,边缘和云)之间分配机器学习算法的最佳方法。电池寿命,物理尺寸,成本,实时连接需求,隐私问题以及调试/故障排除需求只是系统架构师在设计系统时需要考虑的一些问题。典型的物联网架构典型的物联网系统架构包括部署在物理空间中并且通常包括一个或多个传感器的设备(或节点); 在通信协议之间桥接并且位于相对靠近设备的集线器(或网关或边...翻译 2019-01-16 15:53:48 · 1639 阅读 · 0 评论 -
Java程序员应该知道的20个有用的库
一个优秀且经验丰富的Java开发人员的特点之一是对API的广泛了解,包括JDK和第三方库。我花了很多时间学习API,特别是在阅读Effective Java 3rd Edition之后,Joshua Bloch建议如何使用现有的API进行开发,而不是为常用的东西写新的代码。在本文中,我将分享一些Java开发人员应该熟悉的最有用和最重要的库和API。但是,我没有包含框架,例如Spring和Hibe...翻译 2019-02-23 13:46:26 · 1509 阅读 · 0 评论 -
在MySQL中,不要使用“utf8”。使用“utf8mb4”
今天的错误:我试图将一个UTF-8字符串存储在MariaDB“utf8”编码的数据库中,并且引发了一个奇怪的错误:Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1这是UTF-8客户端和UTF-8服务器,位于UTF-8数据库中,具有UTF-8编码规则。字符串“翻译 2019-04-03 22:42:48 · 932 阅读 · 0 评论 -
如果Node.js已具备反向代理的功能,我为什么要使用反向代理?
这一年是2012年.PHP和Ruby on Rails作为渲染Web应用程序的最高服务器端技术而备受瞩目。但是,一个大胆的新竞争者掀起了一场风暴 - 一个能够处理1M并发连接的人。这项技术不过是Node.js,从那以后一直稳步增长。与当时大多数竞争技术不同,Node.js内置了一个Web服务器。拥有这个服务器意味着开发人员可以绕过无数的配置文件,例如文件php.ini的分层集合.htacces...翻译 2019-04-01 20:19:58 · 1303 阅读 · 0 评论 -
如何选择合适的NoSQL数据库
与传统的表格(或SQL)数据库相比,NoSQL数据库为软件开发人员和其他用户提供了更高的运行速度和更高的灵活性。NoSQL数据库使用的数据结构 - 键值对,宽列,图形或文档 - 与关系数据库使用的数据结构不同。因此,NoSQL数据库可以在数千台服务器上进行扩展,但有时会丢失数据一致性。但是,今天特别重要的是,NoSQL数据库特别适合处理大量分布式数据,这使它们成为大数据和分析项目的理想选择。...翻译 2019-03-29 13:02:15 · 1301 阅读 · 0 评论 -
The SQL vs NoSQL Difference: MySQL vs MongoDB
在选择数据库时,最大的决策之一是选择关系(SQL)或非关系(NoSQL)数据结构。虽然两者都是可行的选择,但在做出决定时必须牢记两者之间存在某些关键差异。在这里,我们分解了最重要的区别,并讨论了关系与非关系争论中的两个关键角色:MySQL和MongoDB。你的Quora问题:MongoDB死了吗?大局差异语言考虑一个小镇-我们称之为A镇,每个人都说同一种语言。所有的业务都是围绕它建立...翻译 2019-04-13 20:24:15 · 765 阅读 · 0 评论 -
基于中台思想的物流系统设计(五):设计可扩展的产品服务平台
0、引言在前面四篇文章中,我们把物流中台的基础能力层构建了起来,接下来,我们就可以在这些基础能力之上构建我们的产品服务,从而支撑各条业务线。基础能力层主要关注的是稳定可用的原子接口,因此在设计的时候重点关注了很多高并发高可用的技术。产品服务层主要是为了支撑不断创新的业务,因此在设计的时候需要关注业务流程的可扩展性。下面我们会先从整体上设计出一套抽象模型,然后针对模型的各个模块深入介绍。...原创 2019-01-11 23:00:38 · 2563 阅读 · 0 评论 -
译:容器,VM和Docker的初学者入门介绍
如果你是程序员或技术人员,你很可能听说过Docker:在“容器”中打包,分发和运行应用程序的一款非常有用的工具。它很难不引起大家的注意力– 从开发人员到系统管理员。即使像谷歌,VMware和亚马逊这样的大公司也正在构建支持它的服务。不管你是否对Docker有一个使用的想法,我仍然认为了解一些关于“容器”是什么的基本概念以及它与虚拟机(VM)的区别是很重要的。虽然互联网上好的Docker用户指南非...翻译 2018-12-28 23:34:24 · 1231 阅读 · 0 评论 -
基于中台思想的物流系统设计(一)
一、总体设计在中台架构中,我们往往把一个系统划分为基础能力层和产品服务层。其中,基础能力层聚焦于稳定收敛的业务模型和基础服务本身,不会随着业务和前台产品的调整发生变化,平台产品层则专注于通过流程编排类的技术手段,将基础能力构建成业务的解决方案,解决共性和个性化的问题。基于上面所说的中台架构思想,我们把物流系统划分位物流基础能力层和物流产品服务层:本文将从宏观上来分别介绍物流基础能力...原创 2018-10-20 14:40:18 · 7636 阅读 · 0 评论 -
基于大中台架构的电商业务中台最佳实践之二:交易业务中台核心设计
为什么要用业务中台化思想来架构交易系统上一篇文章已经简要介绍了交易业务中台的设计理念,本篇会详细的来说为何要用中台的思想来架构交易系统。要说明白这个问题,我们必须回看系统的演化路径是怎样随着业务规模的增长进行变化的。首先来看初创公司/新业务系统是如何演进的;以基于云计算为基础的架构模式,大部分的初创的系统架构图如下对于一个业务规模很小,业务也比较单一,该架构也是最高效的方式,一到两...原创 2018-10-26 00:19:28 · 14993 阅读 · 9 评论 -
基于中台思想的物流系统设计(二):构建物流订单能力
一、引言物流订单能力作为基础能力,需要设计一套稳定的订单模型,以及一套能够在高并发环境下持续可用的接口。这些接口作为原子接口,供上层业务复用。上层业务无论多么复杂,通过这些原子接口,最终都会收敛到稳定的订单模型中来,这也是区分基础能力和产品服务的一个重要的边界。本文通过以下5点来介绍如何构建一套物流订单能力:1、模型设计2、状态机设计3、高并发创建接口4、高并发更新接口...原创 2018-10-27 17:39:52 · 4790 阅读 · 2 评论 -
基于大中台架构的电商业务中台最佳实践之三:交易中台技术要点设计之高性能
接着上篇继续讲,接下来主要介绍交易总体设计的技术要点设计,对于电商中台来说,交易系统是核心中的核心,一开始就需要围绕高性能,高可用,和高扩展三个方面来重点设计。本篇主要介绍高性能设计。对于高性能的定义,通常可以理解为系统/服务接口响应时间低(rt)且并发量(qps,tps)高. 提高性能的主要策略有:选择合理的分布式事务处理机制,数据库的分库分表,读写分离,异步化,缓存,复杂查询走搜索。选择合...原创 2018-11-06 13:14:20 · 8481 阅读 · 4 评论 -
基于中台思想的物流系统设计(三):构建物流地址能力
一、引言在电商物流领域我们会涉及到地址,其中包括了基础的四级地址和用户填写的地址。四级地址在整个从下单到收货的业务流程中都会用到,因此设计的时候要考虑如何最大限度地提高QPS。用户地址在下单的时候让用户填写或者选择,然后存在交易订单和物流订单上,后续的流程一般不会变,如果用户需要修改地址,直接变更交易订单和物流订单的地址信息即可,因此设计的时候主要考虑满足各种用户地址场景。 二、...原创 2018-11-11 13:52:04 · 2454 阅读 · 0 评论 -
基于电商中台架构-商品系统设计(一)
一、 总体设计为什么采用中台架构前几篇已经说明了,这里就介绍一下基础层和平台层的功能。基础层发布、编辑、上架、下架这些功能大家应该比较熟悉。审核:是否需要审核通过才允许上架打标:对商品进行标记,例如参加某种活动Sku管理:商品和sku关系关联关系:前后端商品关联关系、组合商品关联关系等前后端商品:前端商品面向用户,后端商品面向仓库类目:商品类目,前后端类目属性:商品属性、类...原创 2018-11-15 20:11:28 · 17267 阅读 · 2 评论 -
从github超24小时的故障看异地多活全局设计的重要性
我们先来回顾一下github这次事故: 2018年10月21日,github 在更换网络设备时,引发了美国东海岸网络中心和东海岸数据中心的网络链接发生了40秒的中断,最终导致多个mysql的主集群由Orchestrator 自动选举切换到了美国西海岸数据中心对应的集群,由此引发了数据不一致,直接导致了超过24小时的服务降级,最后仍然还有少量数据需人工排查修复的悲剧。事件的整个过程参考https:...原创 2018-11-16 15:39:30 · 1461 阅读 · 0 评论 -
基于中台思想的物流系统设计(四):物流服务与物流详情
一、概述在物流系统中,中台只负责物流订单的流转,具体的物流履行往往需要对接第三方快递公司。由于第三方快递公司的技术标准不一样,因此我们需要对第三方快递公司的接口进行封装,这里涉及到两大类封装,一个是下发请求的封装,一个是接收回传的物流详情的封装。对于下发快递公司,我们不仅仅是接口层面的封装,而是抽象出了一套服务模板,让快递公司的物流服务以一种产品形式呈现给商家和用户。对于物流详情,我们会设计一...原创 2018-11-26 09:37:29 · 3891 阅读 · 0 评论 -
基于电商中台架构-商品系统设计(二):类目设计
一、概念定义1.什么是类目类目简单来说就是商品的分类,用大家最常用的淘宝来看,就是图中圈出来的地方。为什么会有类目,也是其功能决定的,类目目前已经作为电商网站导航的标配,只是不同网站的类目不同罢了。如果我们的网站只有几十个、上百个商品,或许类目对于我们来说不重要,但是如果商品有成千上万个,甚至更多,那类目对我们来找到具有某些特点的商品就至关重要了。比如现在要找女式牛仔裤,可以通过类目 女...原创 2018-12-07 19:33:58 · 8545 阅读 · 1 评论 -
Redis中存储亿级键值对
迁移系统时,有时你必须建立一个小脚手架。我们最近不得不这样做:在Instagram上,于遗留原因,我们需要将大约3亿张照片映射到创建它们的用户的ID,以便了解要查询的分片(请参阅有关我们的更多信息)分片设置)。虽然所有客户端和API应用程序都已更新并向我们返回 完整信息,但仍有许多人缓存的旧数据。我们需要一个解决方案:查找键并快速返回值将数据存在内存中,理想情况下是在EC2高内存类型(17G...翻译 2019-04-24 21:00:25 · 1927 阅读 · 0 评论