随笔分类 -  架构与设计模式

摘要:多进程 历史上最早出现也是最简单的一种并处处理多个请求的方法就是利用多进程。 比如在Linux世界中,我们可以使用fork、exec等方法创建多个进程,我们可以在父进程中接收用户的链接请求,然后创建子进程去处理用户请求。 阅读全文
posted @ 2021-02-12 02:36 songguojun 阅读(61) 评论(0) 推荐(0) 编辑
摘要:disruptor是一个高性能的队列,最初是应用在LMAX架构中。我们可以把disruptor用在生产者-消费者问题以获取高效地处理和高吞吐量。 阅读全文
posted @ 2021-02-12 02:34 songguojun 阅读(83) 评论(0) 推荐(0) 编辑
摘要:一、什么是复杂性 Ousterhout 教授认为,软件设计的最大目标,就是降低复杂性(complexity)。 所谓复杂性,就是任何使得软件难于理解和修改的因素。 二、如何度量软件的复杂性 软件复杂性度量的参数主要包括: 1. 规模,即总共指令数或源程序行数。 2. 难度,通常由程序中出现的操作数的 阅读全文
posted @ 2021-02-12 02:11 songguojun 阅读(639) 评论(0) 推荐(0) 编辑
摘要:延时队列的应用 什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的,尤其像电商类平台。 1. 订单成功后,在30分钟内没有支付,自动取消订单 外卖平台发送订餐通知,下单成功后60 阅读全文
posted @ 2021-02-12 01:46 songguojun 阅读(376) 评论(0) 推荐(0) 编辑
摘要:什么是Service Mesh? 根据Linkerd CEO William Morgan定义,Service Mesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。 阅读全文
posted @ 2021-01-10 23:23 songguojun 阅读(124) 评论(0) 推荐(0) 编辑
摘要:什么是规则引擎 规则引擎是一个将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策的组件,它接受数据输入,解释业务规则,并根据业务规则做出业务决策。 规则引擎可以解决什么问题 随着对业务理解的不断深入和抽象,可以发现很多业务场景的功能(代码)都可以抽象成“规则+指标”的模式。这种模 阅读全文
posted @ 2021-01-10 23:11 songguojun 阅读(1158) 评论(0) 推荐(0) 编辑
摘要:秒杀系统在很多平台都有,小米手机的秒杀购买,京东618,淘宝双11等等。 秒杀系统特点 1. 瞬时流量突增 秒杀活动一般会定某个特定时间开启,大量用户请求在活动开始的瞬间涌入,会给服务造成极大的压力。 2. 持续时间短 一半秒杀活动持续时间比较短,可能几个小时就结束了。 3. 对数据的争抢,数据一致 阅读全文
posted @ 2021-01-10 22:48 songguojun 阅读(192) 评论(0) 推荐(0) 编辑
摘要:在微服务架构中,一组细粒度微服务通过相互交互以构建应用或实现业务功能。每个细粒度的服务是实现单个功能或通过网络访问实现几个相关功能。这导致被攻击机会增加,尤其显得微服务架构的安全性非常重要。 保护微服务安全的一些常见技术 1)边界安全 执行边界安全是保护微服务的一种非常传统的方法。 这意味着单个微服 阅读全文
posted @ 2021-01-06 23:27 songguojun 阅读(184) 评论(0) 推荐(0) 编辑
摘要:业界大部分的应用分布式追踪的原理源自 Google 的一篇 Dapper 系统的论文。Dapper是谷歌内部使用的分布式链路追踪系统,虽然没有开源,但是Google在其2010年发布的一篇论文中对其进行了详细的介绍。可以说,Dapper是链路追踪领域的始祖,其提出的概念和理念一致影响着后来所有的分布 阅读全文
posted @ 2021-01-06 22:47 songguojun 阅读(707) 评论(0) 推荐(1) 编辑
摘要:一. 四种监控方式 1) Logging:应用程序,开发中间件,web系统等所输出的一些结构化/非结构化的日志,例如应用程序通过一个滚动的文件输出debug或error信息,并通过日志收集系统存储到Elasticsearch中。这是一种最常见的一种监控方式。 2)Tracing:比如分布式调用链CA 阅读全文
posted @ 2021-01-06 21:18 songguojun 阅读(3066) 评论(0) 推荐(0) 编辑
摘要:什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。 常见开源方案 1. elastic-job 2. xxl-job 3. quartz 4. saturn 5. opencron 6. antares 一. 阅读全文
posted @ 2021-01-06 18:44 songguojun 阅读(554) 评论(0) 推荐(0) 编辑
摘要:随着业务的发展,应用系统中的配置会越来越多,配置之间也有不同的业务特点,比如业务依赖的数据库配置、缓存信息配置、索引存储配置等。这类配置一般比较稳定,不会频繁更改,通常会放在工程中作为配置文件随应用一起发布。 除了这些配置,还有一部分配置会经常发生修改,比如限流降级开关配置、业务中的白名单配置等。这 阅读全文
posted @ 2021-01-06 18:20 songguojun 阅读(576) 评论(0) 推荐(0) 编辑
摘要:一. 微服务限流 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 缓存的目的是提升系统访问速度和增大系统能处理的容量,而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开,而有些场景并不能用缓存和降级 阅读全文
posted @ 2021-01-06 17:43 songguojun 阅读(307) 评论(0) 推荐(0) 编辑
摘要:一. 为什么需要 网关 微服务下网关(API Gateway)是一个服务器,是系统的唯一入口,是统一管理API的一个网络关口、通道,是整个微服务平台所有请求的唯一入口,所有的客户端和消费端都通过统一的网关接入微服务。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端 阅读全文
posted @ 2021-01-06 16:42 songguojun 阅读(485) 评论(0) 推荐(0) 编辑
摘要:什么是微服务 微服务(Microservice Architecture)是最近几年流行的一种架构思想。 一. 微服务的特点 1. 应用组件化 每一个应用都是一个单独的服务,所有的应用都具备可被独立替换和升级,以及可以单独部署。 2. 服务无状态化 这个是可以实现微服务快速扩展的基本条件。 3. 标 阅读全文
posted @ 2020-07-02 19:44 songguojun 阅读(566) 评论(0) 推荐(0) 编辑
摘要:Java 在设计之初就提供了相对完善的异常处理机制,因为这种机制大大降低了编写和维护可靠程序的门槛。 Exception 和 Error,运行时异常与一般异常有什么区别? Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可 阅读全文
posted @ 2020-05-08 17:04 songguojun 阅读(45) 评论(0) 推荐(0) 编辑
摘要:高可用 API 有如下衡量标准: 速度(API 响应时间) 文档(清晰简洁的文档,能够很好的描述 API) 架构和持续性(代码可维护可扩展) 阅读全文
posted @ 2020-04-25 15:58 songguojun 阅读(102) 评论(0) 推荐(0) 编辑
摘要:引言 为什么要学习consul服务发现? 因为一套微服务架构中有很多个服务需要管理,也就是说会有很多对grpc。 如果一一对应的进行管理会很繁琐所以我们需要有一个管理发现的机制。 Consul的介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与服务注册配置功能。 阅读全文
posted @ 2019-09-21 18:43 songguojun 阅读(263) 评论(0) 推荐(0) 编辑
摘要:引言 在软件开发过程中,随着系统复杂度的增加,业务的变更,程序员面临着耦合性,内聚性,可维护性,可扩展性,可重用性的挑战。而良好的设计模式就可以解决此类问题。设计模式是包含了面向对象的精髓,熟练掌握面向对象设计/分析是掌握设计模式的基础。可以帮助我们考虑代码结构,使代码易于维护、易于扩展、易于阅读。 阅读全文
posted @ 2019-08-04 01:21 songguojun 阅读(1439) 评论(0) 推荐(0) 编辑
摘要:一、单点登录介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。也就是说,a.test.cn和b.test.cn两个站点之间只需要登录一次即可。 比如我在登录淘 阅读全文
posted @ 2019-05-30 22:45 songguojun 阅读(523) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示