摘要:一、前言 斯坦福教授、Tcl语言发明者John Ousterhout 的著作《A Philosophy of Software Design》[1],自出版以来,好评如潮。按照IT图书出版的惯例,如果冠名为“实践”,书中内容关注的是某项技术的细节和技巧;冠名为“艺术”,内容可能是记录一件优秀作品的设
阅读全文
随笔分类 - Java
摘要:全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCloud 和 Dubbo 有哪些区别? SpringBoot 和 SpringCloud 之间关系? 什么是熔断?什么是服务降级? 微服务的优缺点是什么?说下你在项目中碰到的坑。 eureka和zookeeper都可以提供服务注册与
阅读全文
摘要:群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息: (1)在线的群友能***时间收到消息 (2)离线的群友能在登陆后收到消息 由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉?》),群消息的复杂度要远高于单对单消息。群消息的实时性,可达性,离线消息是
阅读全文
摘要:很多业务都需要考虑消息投递的顺序性: 单聊消息投递,保证发送方发送顺序与接收方展现顺序一致 群聊消息投递,保证所有接收方展现顺序一致 充值支付消息,保证同一个用户发起的请求在服务端执行序列一致 1. 消息顺序性是分布式系统架构设计中非常难的问题,有什么常见优化实践呢? 折衷一:以客户端或者服务端的时
阅读全文
摘要:数据建模是一种用于定义和分析数据的要求和其需要的相应支持的信息系统的过程。 随着前端页面的交互变得更加细腻复杂,原本存放于服务端的状态放置在了前端,类似 flux、redux、mobx、dva、rematch、vuex 的状态管理库也成了每个项目的标配。 因为分层理念的普及,前端工程师们需要把更多精
阅读全文
摘要:今天,简单的聊聊架构方案,我们是如何平滑进行机房迁移的。 【1】核心问题一,被迁移的系统是一个什么样的架构呢? 上图是一个典型的互联网单机房系统架构: 上游是客户端,PC浏览器或者APP; 然后是站点接入层,做了高可用集群; 接下来是服务层,服务层又分为两层,业务服务层和基础服务层,也都做了高可用集
阅读全文
摘要:什么是多维度立体化监控? 不同公司或多或少有一些自动化监控手段,例如: http接口监控; log关键字监控; 操作系统,进程,端口; http状态码; 服务存活性; 接口处理时间; RPC接口监控; 用户层面监控; 如果只监控一个或少数几个维度: 监控到异常时,基本确信系统出现了问题; 反过来,没
阅读全文
摘要:除了基础数据的访问需要服务化,业务层是否需要服务化?如果需要,什么时机进行服务化?这是本文要讨论的两个问题。 很多公司,都实施了微服务架构,底层抽象出很多基础数据服务。 基础数据的访问服务化之后,架构如上: 站点业务通过RPC接口,调用基础数据服务; 基础数据服务通过DAO,从db/cache获取数
阅读全文
摘要:每当发出一条微信消息,都希望对方尽快看到,并尽快回复,但始终不知道对方是否阅读。 每当收到一条不能立马回复的微信消息,都默默返回,假装没看见。 画外音:不想回复的人,唉,你只是个好人。 微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。 钉钉用于商务交流,
阅读全文
摘要:经常有朋友问我,为什么要做分层架构,什么时候架构要抽象一层,今天来聊一聊这个问题。 上图是一个典型的互联网分层架构: 客户端层:典型调用方是browser或者APP; 站点应用层:实现核心业务逻辑,从下游获取数据,对上游返回html或者json; 数据-缓存层:加速访问存储; 数据-数据库层:固化数
阅读全文
摘要:前言 高性能是每个程序员的追求,无论写一行代码还是做一个系统,都希望能够达到高性能的效果。高性能架构设计主要集中在两方面: 尽量提升单服务器的性能,将单服务器的性能发挥到极致 如果单服务器无法支撑性能,设计服务器集群方案 单服务器高性能的关键之一就是服务器采取的网络编程模型。服务器如何管理连
阅读全文
摘要:近几年,Kubernetes 已经成为自有机房、云上广泛使用的容器编排方案,最广泛的使用方式是 Kubernetes+Docker。从 DevOps 人员的角度,一面用 kubctl 命令、k8s API 来操作集群,一面在单机用 Docker 命令来管理镜像、运行镜像。 单独用 Docker 的情
阅读全文
摘要:0. 前言 美团外卖自2013年创建以来,业务一直在高速发展,目前日订单量已突破3000万单,已成为美团点评最重要的业务之一。美团外卖所承载的业务,从早期单一的美食业务发展成为了外卖平台业务。目前除餐饮业务外,闪购、跑腿、闪付、营销、广告等产品形态的业务也陆续在外卖平台上线。参与到美团外卖平台的业务
阅读全文
摘要:模块(Module)、组件(Component)、包(Package),这些概念对于我们技术同学并不陌生,但并不是所有人都能理解其要义。深入理解之后,我才发现,其背后的深意是分类思维。而这种分类也是应用架构的核心所在,通过不同粒度、不同层次的分类,把复杂的软件系统实现控制在可以被理解、被维护的程度。
阅读全文
摘要:一、 Docker简介 Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。 Docker 项目的
阅读全文
摘要:1.软件架构的核心挑战是快速增长的复杂性越是大型系统,越需要简单性。大型系统的本质问题是复杂性问题。互联网软件,是典型的大型系统,如下图所示,数百个甚至更多的微服务相互调用/依赖,组成一个组件数量大、行为复杂、时刻在变动(发布、配置变更)当中的动态的、复杂的系统。而且,软件工程师们常常自嘲,“whe
阅读全文
摘要:时代演进,技术也随之发展。到今天,APP已然成为绝大多数互联网企业用来获取用户的核心渠道。与此同时,伴随着业务量的增长,愈来愈大、愈来愈多的APP也在不断地、持续地挑战着每一个移动端研发人员的知识深度,而我们的移动端技术人员也在这个不断接受挑战的过程中,成就了今天的移动互联网时代。饿了么移动APP就
阅读全文
摘要:写在前面 随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。当然,很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变。今天,
阅读全文
摘要:然而,很多开发者至今还对各种软件架构模式之间的差别搞不清,甚至对其所知甚少。 大体上,主要有下面这几种架构模式: 分层架构 管道 - 过滤器架构 客户端 - 服务器架构 模型 - 视图 - 控制器架构 事件驱动架构 微服务架构 程序员必知的几种软件架构模式 分层架构模式 最常见的架构模式就是分层架构
阅读全文
摘要:https://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html
阅读全文