自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 访问者模式 Visitor Pattern

https://en.wikipedia.org/wiki/Visitor_pattern#Java_example访问者模式是一种将算法「algorithm」与对象结构 「object structure」分离的软件设计模式。由于这种分离,可以在不修改结构的情况下将新的操作「opertations」添加到现有的对象结构中。它是面向对象编程和软件工程中遵循开放/封闭原则的一种方法。本质上,访问者允许向类族「a family of classes」添加新的虚拟函数「 virtual functions」,而无

2025-02-19 15:08:18 791

原创 组合模式 Composite Pattern

组合模式是一种分区设计模式。组合模式描述了一组对象,这些对象被视为同一类型对象的单个实例。组合的目的是将对象“组合「compose」”成树结构,以表示部分-整体层次结构。实现组合模式可以让客户端统一处理单个对象和组合。

2025-02-18 20:13:13 1018

原创 适配器模式 Adapter Pattern

适配器模式(也称为包装器「」,与装饰器模式「」共享的另一种命名),它允许将现有类的接口用作另一个接口。它通常用于使现有类与其他类协同工作,而无需修改其源代码。适配器模式描述了如何解决重复出现的「recurring」设计问题,以设计灵活和可重用的面向对象软件,即更容易实现、更改、测试和重用的对象。

2025-02-18 16:58:55 725

原创 OOP中的类之间关系

关系类型定义特点示例继承"is-a" 关系子类继承父类的属性和方法,强耦合实现"can-do" 关系类实现接口的方法,松耦合关联"has-a" 关系类与类之间有联系,生命周期独立Teacher和Student聚合"whole-part" 关系整体和部分可以独立存在,生命周期独立Department和Employee组合强 "whole-part" 关系整体和部分生命周期紧密关联,部分不能独立存在House和Room依赖"use-a" 关系临时关系,通常体现在方法参数或局部变量中Car依赖。

2025-02-18 12:14:46 761

原创 策略模式 Strategy Pattern

策略模式「strategy pattern 」(也称为policy pattern)是一种行为软件设计模式「behavioral」,可以在运行时选择算法。代码不是直接实现单个算法,而是接收运行时指令,指示使用一系列算法「a family of algorithms」中的哪一个。在上面的UML类图中,Context类不直接实现算法。相反,Context引用 用于执行算法的Strategy接口(Strategy.algorithm()),这使得Context独立于算法的实现方式。

2025-02-18 07:32:03 1132

原创 桥接模式 Bridge Pattern

的理解出了问题。

2025-02-17 18:44:13 854

原创 Base62 vs Base 64

从数据传输到存储,数据编码系统在各种数字应用中都是至关重要的。本文简要概述了两种流行的编码模式:Base62和Base64。我们将查看它们的字符集、用例和重要差异,以帮助您做出明智的编码决策。在处理URL缩短、数据序列化或其他数据表示活动时,理解Base62和Base64之间的区别至关重要。让我们研究一下它们的复杂性和实际影响(repercussion)。

2025-01-06 10:11:29 857

原创 Airbnb/Booking 系统设计(high level architecture)

B站搜 “Airbnb System Design” 有视频版本。

2024-12-30 20:11:00 990

原创 建造者模式 Builder Pattern

在创建一个对象的时候,构造器参数有点多,而且有些参数还是可选的,再者还有不少同类型的,那就更应该使用 builder 模式了。使用 Builder 模式的初衷是 把易变性(mutability)移动到Builder类,而使得要被创建的对象变得不可变(immutable)。

2024-12-30 00:04:58 565

原创 Data Security 数据安全

数据安全是在数字信息的整个生命周期中保护其免受损坏(corruption)、盗窃或未经授权访问的过程。它涵盖了一切——硬件、软件、存储设备和用户设备;访问和管理控制;以及组织的政策和程序。数据安全使用工具和技术来增强公司数据及其使用情况的可见性。这些工具可以通过数据屏蔽(masking)、加密和敏感信息编校(redaction)等过程来保护数据。该过程还有助于组织简化(streamline)其审计程序,并遵守日益严格(increasingly stringent)的数据保护法规。

2024-12-25 10:20:47 934

原创 RS256 vs HS256 有什么不同(JWT签名)?

原文链接。

2024-12-24 00:48:56 544

原创 McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

我们构建了特定于语言的库,为生产者和消费者提供api,以编写和读取具有内置逻辑的体系结构事件,以执行模式验证、处理错误和实现重试模式。sdk作为我们开发团队的加速器,提高了他们的生产力,并提供了实现最佳实践的一致方法。

2024-12-22 00:30:29 1137 1

原创 Partition Strategies kafka分区策略

原文链接 Kafka Partition Strategy分区策略简介分区增加了并行化并允许Kafka扩展。存在许多将消息分发到主题分区的策略。在我们深入研究每种策略的背景之前,下面的表格给出了每种策略的简要概述。Kafka消息由生产者发送,由消费者接收。这两种策略是不同的,所以我们有两个表,一个总结每种策略。key=null,使用 round-robin 方式。key!=null, 使用 hash 算法顾名思义,这是生成消息的默认策略。当键为空时,记录被随机发送到主题的一个可用分区。如果一个键存在,Kaf

2024-12-21 14:18:10 1117

原创 Event-Driven Architecture Patterns 终极指南

说实话,这个文章所涉及的内容的复杂(广度),有点吓到我了 🤣🤣🤣。虽不深刻,但静下心来慢慢品,总能找出一些感悟,希望你也能喜欢😄文中这句话也说到了我的心里。“想要追求完美且能普遍接受的定义,只能排除干扰, 去理解和感受不同类型的event-driven 模式。其过程堪比剥洋葱。🤣”kinds在本文中,您将了解事件驱动架构模式的分类,并了解从通信到治理的各种有用模式。不是相互排斥的,一些应用程序和用例可能需要不同领域的模式组合。阅读更多内容,发现这些类别中一些流行的和重要的模式。

2024-12-19 21:44:16 1176

原创 Serverless Computing? 无服务器计算?

无服务器计算是一种应用程序开发和执行模型,它使开发人员能够构建和运行应用程序代码,而无需配置或管理服务器或后端基础设施。无服务器并不意味着“没有服务器”。无服务器计算中的服务器是由云服务提供商(CSP【cloud service provider】)管理的。无服务器描述了开发人员使用这些服务器的体验——它们对开发人员来说是不可见的,开发人员看不到它们、管理它们或以任何方式与它们交互。开发人员可以通过无服务器计算专注于编写最佳前端应用程序代码和业务逻辑。

2024-12-17 19:56:26 473

原创 Sidecar Design Pattern 边车模式/跨斗模式(微服务)

总体而言,虽然 Sidecar 设计模式在模块化、可观察性和关注点隔离方面具有优势,但它也带来了与资源开销、容器间通信、编排复杂性和同步相关的挑战。这可以提高资源利用率和可扩展性,因为可以部署额外的 Sidecar 实例来处理增加的负载或特定任务,而不会影响主微服务。这些组件收集有关微服务的行为、性能和健康状况的数据,提供对其运行情况的洞察,并促进故障排除和优化。:运行在同一容器环境中的微服务和 Sidecar 实例可以通过操作系统提供的进程间通信机制进行通信,例如 Unix 套接字或命名管道。

2024-12-17 15:56:43 734

原创 What is Change Data Capture? CDC是什么?

更改数据捕获【Change data capture】(CDC)是指跟踪数据源(如数据库和数据仓库)中所有更改的过程,以便在目标系统中捕获这些更改。事务日志( transaction logs)和数据库触发器(database triggers)等CDC方法允许组织跨多个系统和部署环境实现数据完整性和一致性。此外,它们允许组织通过将数据从遗留数据库(legacy databases)移动到专门构建(purpose-built)的数据平台(如文档或搜索数据库或数据仓库)来为正确的工作使用正确的工具。

2024-12-17 12:05:18 1191

原创 SSH Keys 是什么?

通过使用一对加密密钥(一个公钥和一个私钥),您可以验证自己的身份,而无需通过网络发送密码,从而使您的连接更加安全。随着网络安全的重要性日益增加,使用 SSH 密钥是一种简单而有效的保护在线活动的方法。哈希处理是密码学中使用的一种过程,它将可变长度的字符串转换为固定长度的字符串,这个固定长度的值称为哈希值,由哈希函数生成。如果是的话,服务器就会创建一个新的密钥,并使用通过本地计算机发送给它的公钥对其进行加密。在对称密钥加密中,加密和解密消息使用相同的密钥,发送者和接收者之间保留唯一的单个共享密钥。

2024-12-16 19:10:02 1145

原创 SSH vs SSL/TLS 的不同和相似

虽然SSH和SSL/TLS在创建安全连接方面的作用看起来很相似,但它们的用途非常不同。SSH主要是技术人员的工具。它允许安全登录到远程机器以发出命令、操作文件和管理数据库。另一方面,SSL/TLS是一种加密网站访问者和服务器之间交换数据的机制。它确保敏感信息,如信用卡详细信息和密码,免受中间人攻击。当然,这两者并不相互排斥。SSH可以使用SSL/TLS作为其安全解决方案的一部分。这些通用协议有多种可能的实现。如今,面对我们面临的所有在线威胁,它们是必要的。

2024-12-16 19:07:35 1046

原创 Coupling and Cohesion 耦合与内聚(软件工程)

:如果一个模块的目的集合是一个过程的所有部分,在这个过程中,为了实现一个目标,必须执行特定的步骤序列,例如,解码消息的算法,那么这个模块就被称为过程内聚。):如果模块的所有任务都引用或更新相同的数据结构,例如,在数组或堆栈上定义的函数集,则模块具有通信内聚性。):如果模块的元素构成序列的组件,则模块具有顺序内聚,其中序列的一个组件的输出输入到下一个组件。):如果模块的所有元素执行类似的操作,则称模块是逻辑内聚的。):如果两个模块共享代码,例如,从一个模块到另一个模块的分支,则存在内容耦合。

2024-12-16 11:47:49 1087

原创 Secure Socket Layer (SSL) 安全套接字层

结论)已取代了 SSL ,但 SSL 仍然得到广泛认可,并且是建立用户和 Web 服务器之间安全连接的基础。了解 SSL 对于了解互联网安全的演变和在线敏感信息的保护至关重要。总体而言,SSL 证书是网络安全的重要组成部分,提供加密(encryption)、身份验证()、完整性(integrity)、不可否认性()和其他关键功能,确保敏感信息在互联网上安全可靠地传输。为 Web 浏览器和服务器之间传输的数据提供安全性。

2024-12-16 10:09:00 2118

原创 Layers of OSI Model - 7层模型

OSI(开放系统互连 ())模型是一组解释不同计算机系统如何在网络上通信的规则。OSI模型是由国际标准化组织(ISO -)开发的。OSI模型由7层组成,每一层都有特定的功能和职责。这种分层的方法使不同的设备和技术更容易协同工作。OSI模型为数据传输和管理网络问题提供了一个清晰的结构。OSI模型被广泛用作理解网络系统如何运行的参考。在本文中,我们将详细讨论OSI模型和OSI模型的每一层。我们还将讨论OSI模型中的数据流以及OSI模型与TCP/IP模型的不同之处。

2024-12-16 00:51:27 1136

原创 Service Mesh 服务网格

总之,服务网格就像微服务的一个有用的协调器(coordinator),确保它们在复杂的软件应用程序中有效和安全地通信。它管理流量,增强安全性,并提供对系统性能的洞察。通过集中管理和提供高级功能,如负载平衡(load balancing )和容错(fault tolerance),服务网格简化了基于微服务的系统的开发和操作。这就像有一个可靠的指南,保持一切顺利运行,允许开发人员专注于构建伟大的软件。

2024-12-15 13:15:25 706 1

原创 CQRS Design Pattern in Microservices - CQRS模式

为命令和查询服务设计清晰一致的API,指定它们支持的操作类型以及它们接受和返回的数据格式。

2024-12-15 11:35:00 1037

原创 Service Discovery in Microservices 客户端/服务端服务发现

当 Service-A 准备调用 Service-B时,首先请求发送到 load balancer(LB), 然后LB去发现服务(Discovery Service)查询 Service-B的地址,结果发现有四个 Service-B。客户端的服务发现其实就是 Service-A想要调用Service-B,直接请求发现服务,发现服务返回Service-B的四个实例地址,然后负载均衡由客户端Service-A 决定。2,服务器(负载均衡器)使用发现服务(Discovery Service)执行查询。

2024-12-14 21:53:27 875

原创 Top 10 Microservices Patterns 每个开发都应该知道的10种微服务模式

理解可能有错,我们评论里见。

2024-12-14 16:10:30 1063

原创 ByteByteGo-Forward/Reverse Proxy正/反向代理

用户设备 和 互联网 之间:保护客户端、避免浏览限制、阻止访问某些内容:使得被隔离在专用网络(private network)的设备(电脑)可以连接到公共网络(Internet)。

2024-12-14 10:27:15 421

原创 Beginner’s Kafka tutorial -Kafka及其生态简介(财富100强都在用)

Kafka是一个事件流平台(event streaming platform)。用来大规模的 collect, process, store, and integrate data。用例包括 分布式流(distributed streaming), (流处理)stream processing, (数据集成)data integration , and (发布/订阅)pub/sub messaging.

2024-12-12 23:52:22 253

原创 Event Sourcing Pattern 事件流模式

Event Sourcing Pattern 就像为你的软件写一本详细的日记。而不是只保留目前的数据状态,对每一次的变动(change)都记录成一次事件(event)。随着时间的推移,这些事件(events)展示了数据的完整历史。通过回放这些事件来重建数据,来理解它发展历程。1,事件按顺序存放,形成一个日志或所发生的操作的日记。2,任何时间点都可以通过回放这些事件,来重置程序的状态。3,频繁用于历史数据至关重要的 金融行业 和 电商行业等。

2024-12-12 12:02:21 694

原创 Message Queues vs Event Streams 消息队列和事件流

强调数据的实时、顺序流。在事件驱动的架构中,事件流提供了一种方法,可以将系统状态的变化捕获并存储为一系列不可变事件,从而实现准确的回放和审计。Message Queues不需要sender 和 receiver同时在线,提供了更灵活和扩展的系统设计。在电子商务中,消息队列通过确保每个订单都得到可靠和顺序的处理来管理订单,即使在高流量时段也是如此。Amazon SQS:AWS提供的完全托管的消息队列服务,以其可扩展性和易用性而闻名。金融机构通过实时分析交易数据中的模式,使用事件流来检测和应对欺诈活动。

2024-12-12 00:59:14 1050

原创 ByteByteGo-A cheat sheet for system designs 系统设计备忘单

原文 https://blog.bytebytego.com/i/141018935/a-cheat-sheet-for-system-designs

2024-12-11 23:33:14 199

原创 Batch vs. streaming data processing 批处理和流处理

Batch processing 以固定的间隔处理大量的数据。适用于对时间不敏感的任务,如定期备份,每日结束时生成报告。Streaming processing 从数据流入就开始不间断的处理数据。适用于分析来自温度传感器的数据,或分析服务器日志中的可疑活动等。

2024-12-11 23:30:26 336

原创 Dual-Write Problem 双写问题(微服务)

原文链接双写问题发生于当两个外部系统必须以原子的方式更新时。

2024-12-11 21:11:31 2104

原创 Design a Payment System 设计一个支付系统

B站搜“国外大佬教你如何设计支付系统”有视频版本。视频出处先给个总结,主要包括如下内容。本视频揭秘实现一个可靠和可扩展的支付系统的过程。

2024-12-11 13:21:00 987

原创 Database Replication 数据库复制

在不同服务器上创建和维护数据库的重复副本。提高数据的可用性(通过跨多个服务器复制数据,组织可以确保即使一个服务器发生故障,他们的数据仍然可以访问。可靠性(这种冗余(redundancy)也提高了数据可靠性,因为在数据损坏或丢失( corruption or loss)的情况下,有多个副本可用于恢复数据。可扩展性(可以帮助在服务器之间分配工作负载,提高性能和可扩展性。

2024-12-10 20:48:42 699

原创 What are Application Load Balancers? 应用层负载均衡?

作用于OSI模型(Open Systems Interconnection (OSI) model)应用层。而常规的(conventional)Load Balancers 处于传输层。ALBs可基于HTTP/HTTPS 的请求 path, header, or cookie进行路由。这允许更复杂的路由和更好的负载平衡,这使得ALBs成为现代web应用程序、微服务和容器系统的理想选择。

2024-12-10 12:03:19 1782

原创 What is load balancing? 什么是负载均衡?

在多台服务器之间高效的分配网络流量的过程,以优化应用程序的可用性,同时确保积极的用户体验。电商网站依赖负载均衡(load balancing)来确保web应用能够无延迟,不停机的发送数据到用户端。

2024-12-10 09:57:48 1196

原创 Scaling Horizontally and Vertically 水平扩展和垂直扩展

原文链接可扩展性(scalability)的衡量是以一个应用能够同时管理的客户端请求的数量为基准。数据库的可扩展性是数据库能操作()修改需求的能力。包括【新增数据】和【删除数据】。水平扩展(horizontal scaling (or scaling out))就是增加额外的服务器,加一个负载均衡器(load balancer )分发流量。垂直扩展(vertical scaling (also known as scale-up))就是通过增加硬件(CPU,内存,磁盘,网卡等),提高机器的性能。

2024-12-10 00:45:15 362

原创 ByteByteGo-Top 12 Tips for API Security- API安全的12大技巧

B站搜“Top 12 Tips For API Security”有视频版本。

2024-12-09 23:05:46 907

原创 WebAuthn(Web Authentication API) 是什么?

用户可以使用多种身份验证器注册到web服务,包括外部身份验证器(external authenticator,),如安全密钥( security key)或内置在平台中(built into the platform)的身份验证器,如生物识别(biometrics)(指纹(fingerprint)、虹膜扫描(iris scan)、面部识别(facial recognition))。一旦用户注册,他们可以选择注销(sign out)并使用用户首选的身份验证器再次登录(sign in )。

2024-12-09 19:09:55 950

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除