分布式事务解决方案 分布式事务分布式事务顾名思义就是要在分布式系统中实现事务,它其实是由多个本地事务组合而成。 对于分布式事务而言几乎满足不了 ACID,其实对于单机事务而言大部分情况下也没有满足 ACID,不然怎么会有四种隔离级别呢?所以更别说分布在不同数据库或者不同应用上的分布式事务了。 分布式事务有几种解决方案: 2PC(Two-phase commit protocol、二阶段提交) 3PC TCC(Try 2022-12-01 分布式 #分布式
幂等 定义幂等概念来自数学,表示对数据源做 N 次变换和 1 次变换的结果是相同的。 在互联网项目中幂等性用来表示用户对同一操作发起的一次请求或者多次请求的结果是一致的。 要求幂等的场景 前端重复提交:用户快速重复点击多次,造成后端生成多个内容重复的数据。 接口超时重试:对于给第三方调用的接口,为了防止网络抖动或其他原因造成请求丢失,这样的接口一般都会设计成超时重试多次。HTTP,RPC 等在超时的情 2022-12-01 分布式 #分布式
强一致性 弱一致性 最终一致性 最近在看zookeeper视频,提到了zookeeper的数据提交是最终一致性。leader和超过一半的follow提交成功后才会返回成功。 这种方式在ES等分布式系统中也有体现,可以设置主Shard提交即返回成功,或者需要Replica Shard提交成功再返回。 提到分布式架构就一定绕不开“一致性”问题,而“一致性”其实又包含了数据一致性和事务一致性两种情况,本文主要讨论数据一致性(事务一致性 2022-12-01 分布式 #分布式
JMeter 入门使用 JMeterApache JMeter 是 Apache 组织基于 Java 开发的压力测试工具。体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为 JMeter 是 Java 开发的,所以运行的时候必须先要安装 jdk。JMeter 是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux/windows/macos 上都可以使用。安装包也 2022-03-08 test #test
线程组参数解释 Number of Threads(users) | 线程数线程数,相当于模拟的用户数量 Ramp-up Period(in seconds) | Ramp-up 时间(秒) 该参数决定多长时间启动所有线程。如果使用10个线程,ramp-up period=100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-u 2022-03-08 test #test
01-ElasticSearch IK分词器(中文分词器) 简介分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分词器的情况下),比如“分词”会被分“分”,”词”,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。 IK提供了两个分词算法: ik_smart和ik_max_word ,其中i 2022-03-02 ElasticSearch #ElasticSearch
01-ElasticSearch Rest 方式使用 Rest风格说明Rest 是一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 基本Rest命令说明 method url地址 描述 PUT(创建,修改) localhost:9200/索引名称/类型名称/文档id 创建文档(指定文档id) 2022-03-02 ElasticSearch #ElasticSearch
01-ElasticSearch SpringBoot 整合 1、目录结构 2、导入依赖注意依赖版本和安装的版本一致 123456789101112131415161718192021222324<properties> <java.version>1.8</java.version> <!-- 统一版本 --> <elasticsearch.version>7.6.1</e 2022-03-02 ElasticSearch #ElasticSearch
01-ElasticSearch 安装(windows) 1、安装前提 最低要求:JDK8 使用Java开发,必须保证ElasticSearch的版本与Java的核心jar包版本对应!(Java环境保证没错) 地址: 下载地址:https://www.elastic.co/cn/downloads/ 历史版本下载:https://www.elastic.co/cn/downloads/past-releases/ 2、目录123456789101 2022-03-02 ElasticSearch #ElasticSearch
01-ElasticSearch 核心概念 核心概念简介 索引。索引是映射类型的容器, ElasticSearch 中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置。然后它们被存储到了各个分片上了。 创建新索引: 一个集群至少有一个节点,而一个节点就是一个 ElasticSearch 进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有个 5 个分片(primary shard ,又称主分片)构成的,每一个主分片 2022-03-02 ElasticSearch #ElasticSearch
02-ElasticSearch elasticsearch-head 可视化界面安装 安装使用前提:需要安装nodejs 下载地址:https://github.com/mobz/elasticsearch-head 解压并进入目录 cd elasticsearch-head 安装依赖:npm install 启动:npm run start 访问:http://localhost:9100/ 访问存在跨域问题(只有当两个页面同源,才能交互),需要开启跨域(在elasticse 2022-03-02 ElasticSearch #ElasticSearch
03-ElasticSearch kibana 安装 简介Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana ,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard )实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基 2022-03-02 ElasticSearch #ElasticSearch
ElasticSearch 简介 官网:https://www.elastic.co/cn/downloads/elasticsearch ElasticSearch 概述Elaticsearch,简称为 es,es 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储和检索数据。本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和 2022-03-01 ElasticSearch #ElasticSearch
大纲 恭喜你发现了新大陆 1、操作系统 00-操作系统 基础 用户态和内核态、中断、系统调用 01-操作系统 内存 内存碎片 连续内存管理、buddy 系统 非连续内存管理、段氏、页式、虚拟内存(★)、MMU、TLB、页表、页目录、页面置换算法(★) 局部性原理 缓冲区溢出(★) 02-操作系统 进程和线程 进程和线程的区别 进程间通信方式、线程间通信方式 进程的状态、进程调度 上下文切换、PC 2022-02-02
SSO 单点登录协议之 CAS与OAuth2 背景在系统开发初期,系统很少,每个系统都有自己的登录模块,用户直接使用自己的账号进行登录即可。 但当功能不断完善,为了合理利用资源并降低耦合性,往往需要将单系统拆分为多个子系统。 以阿里系的网站为例,一个网站背后有众多的子系统,用户的一次交易或操作往往可能需要十多甚至几十个子系统的协作,如果每个子系统都需要用户进行登录验证,那么用户就需要登录几十次,这显然是不可行的。 那么现在我们面对的情况如下: 2021-09-02 sso #sso
Django REST framework +drf_yasg 生成swaggers在线API文档 安装1pip install drf-yasg 第一步:新建一个Django项目1django-admin.py startproject DjangoDrfTest 第二步:新建一个APP1python manage.py startapp news 第三步:修改settings.py12345678910111213141516171819202122232425262728293031 2021-08-18 Python > Django > DRF #Python #Django #DRF
Django REST framework 介绍 Django REST framework介绍现在前后端分离的架构设计越来越流行,业界甚至出现了API优先的趋势。 显然API开发已经成为后端程序员的必备技能了,那作为Python程序员特别是把Django作为自己主要的开发框架的程序员,Django REST framework(DRF)这个API框应该是要学的。 Django REST framework(DRF)框架文档齐全,社区较稳定,而且 2021-08-18 Python > Django > DRF #Python #Django #DRF
Django REST framework 序列化 简介使用序列化有四种方式 使用json模块,完全手写 使用django自带的序列化模块1,# from django.core import serializers2,# data=serializers.serialize(“json”,book_list) 使用REST framework 带的序列化方法,但是自己写规则BookSerializers(serializers.Ser 2021-08-18 Python > Django > DRF #Python #Django #DRF
Django REST framework 序列化-字段含义 官方原文链接本系列文章 github 地址 Serializer 字段 Form 类中的每个字段不仅负责验证数据,还负责 “清洗” 它 — 将其规范化为一致的格式。 序列化字段处理基本数据类型和其他数据类型(比如自定义的类)之间的转换。它们还可以对数据进行验证,以及从其父对象中检索和设置值。 注意: 序列化字段都声明在 fields.py 中,但按照惯例,应该使用 from rest_ 2021-08-18 Python > Django > DRF #Python #Django #DRF
Django REST framework 视图 上一部分代码在序列化部分 类继承顺序 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960############### mixins.py ################# 类中调用的方法均在 GenericAPIView 类 2021-08-18 Python > Django > DRF #Python #Django #DRF