架构师必备:系统性解决幂等问题

要在应用中做到幂等,其实并不难,本文尝试做一个系统性的总结,欢迎一起探讨。 什么是幂等 某个操作执行一次,跟执行多次的效果一样。幂等一词来自于数学中的幂等,即f(f(x)) = f(x)。 需要保证幂等的场景 查询类的读操作,天然是幂等的,多次调用不会有副作用。需考虑以下几种写操作的情况: 调用下游 ...阅读全文

大数据之ZooKeeper

数据模型 ZooKeeper数据模型是一个树状的数据结构,类似于文件系统;和文件系统的区别在于树中的每一个节点(叶子节点与非叶子节点)都可以保存数据,且每个节点的访问都必须从根节点开始,以斜线作为分隔的访问路径,如 /root/a/b/,它没有相对路径的概念,所有的节点都必须通过绝对路径来访问; Z ...阅读全文

Redis最常用的使用场景

1、计数器 可以对 String 进行自增自减运算,从而实现计数器功能。 Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。 2、缓存 将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。 3、会话缓存 可以使用 Redis 来统一存储多台应用服务器的会 ...阅读全文

微服务注册中心 Nacos 比 Eureka的优势

为什么要使用注册中心 有使用过ip:port地址直接调用服务的开发经历么?该段痛苦的经历在此处省略500字......,该种方式的缺点: 需要手动的维护所有的服务访问ip地址列表。 单个服务实现负载均衡需要自己搭建,例如使用nginx负载均衡策略,或者基于容器化多实例部署单个服务,在实例之间做负载均 ...阅读全文

删除排序数组中的重复项

题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 作者:力扣 (LeetCode)链接:https://leetcode-cn.c ...阅读全文

【设计模式】- 单例模式

1.单例模式:保证一个类只要一个实例,并提供一个访问它的全局访问点。 2.谈到单例模式,可能有人听过‘饿汉式单例类’ 和 ‘饱汉式单例类’。 饿汉式单例类, 类在被加载时就实例化了。 饱汉式单例类, 类在第一次被引用时被实例化。 3.多线程下保证单例,双重锁定,代码如下: namespace Sin ...阅读全文

微服务拆分原则以及实践

拆分原则 1.明确服务边界。狗就好好的啃骨头,猫就老实拿耗子。 2.服务之间单向无环依赖。分析服务之间的依赖关系,可以是代码包级别的,也可以是业务逻辑级别的,保证无环才可拆解。 3.交互方式遵循上下游关系,下游叶子节点服务可以调用上游接口(HTTP协议),上游节点服务通过事件(事件总线,消息总线)影 ...阅读全文

从0开始学架构之架构的目的

前言 本文介绍架构的目的是什么,架构是解决什么问题。 目的 架构的目的不是为了架构而架构,不是别人做了所以自己要做,不是为了技术自嗨。。。 架构的真正目的在于解决软件系统复杂度带来的问题。这条准则可以让新手架构心里有数,不会一头雾水,让老手架构有的放矢,不要贪大求全。 有了指导思想,让我们来举个例子 ...阅读全文

物联网的应用模式

一、前言 什么是模式?简单说就是一种总结,一种模版,一种标准流程。惯用法-设计模式-架构风格,就是IT这边常见的三层模式。至于应用模式,我的理解是特定应用领域下的模式。 由于物联网的特性,其有很多应用模式。这些应用模式并不是专属于物联网应用领域,而是在物联网应用领域,放大了这些应用模式的效果与价值。 ...阅读全文

PHP设计模式—中介者模式

定义: 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 结构: Mediator:抽象中介者,定义了同事对象到中介者对象的接口。 Colleague:抽象同事类。 ConcreteMedi ...阅读全文

[C++] Class工厂

Class工厂本质 本质为实现一个Map,在程序的main函数运行前将可以生成各类实例的函数放到此Map中(即“注册”),总接下来需要一下几个条件: 实现一个Map,此Map在各注册逻辑运行前被初始化 为每个类实现一个生成函数,用于创建并返回各类的实例 将生成函数加入到Map中发生在main函数执行 ...阅读全文