随笔分类 - 互联网-分布式
摘要:前三篇博文分别记录了Eureka、Zookeeper、Consul三个服务中心,那么他们之前有何区别呢? 一: 因为不会同时存在或者同时满足C、A、P三个方面,所以只能存在cp,ap,ca三种体系, CAP的概念以及关注的点,看下图: ap:例如双11阿里,先保证高可用,可以允许数据有稍微的不一致,
阅读全文
摘要:1.首先了解几个概念 1)、TGC:Ticket-granting cookie,存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用。2)、TGT:ticket granting ticket,TGT对象的ID就是TGC的值,在服务器端,通过TGC查询TGT。TGT封装了
阅读全文
摘要:单点登录的实现原理 单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。 我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教
阅读全文
摘要:个人总结 一、拆分原则 单一职责 服务粒度适中 考虑团队结构 以业务模型切入 演进式拆分 避免环形依赖和双向依赖 1 人员的角度 维护一个代名工程Denali的百万级代码怪兽(虽然物理部署是分离的),从发布到上线,从人员的角度,百号人同时在一个工程上开发,一旦线上出问题,所有代码都需要回滚,从人员的
阅读全文
摘要:◆ 两阶段提交/XA XA是由X/Open组织提出的分布式事务的规范,XA规范主要定义了(全局)事务管理器(TM)和(局部)资源管理器(RM)之间的接口。本地的数据库如mysql在XA中扮演的是RM角色 XA一共分为两阶段: 第一阶段(prepare):即所有的参与者RM准备执行事务并锁住需要的资源
阅读全文
摘要:前言 数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务拥有以下四个特性,习惯上被称为 ACID 特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(C
阅读全文
摘要:1为什么需要配置中心 配置实时生效: 传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门
阅读全文
摘要:分布式配置中心--Apollo Apollo(阿波罗)是携程开源的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,支持配置热发布并实时推送到应用端,并且具备规范的权限及流程治理等特性,适用于分布式微服务配置管理场景 Apollo配置中心介绍 程序功能日益复杂,程序配置日益增多:各种功能开
阅读全文
摘要:一、Apollo快速搭建 apollo环境的搭建主要参考 官方文档 ,我们就直接一步一步跟着官方文档来 1、下载Quick Start安装包 下载apollo-build-scripts项目 2、创建数据库 之前有说过,apollo会有两个数据库: ApolloPortalDB 和 ApolloCo
阅读全文
摘要:Apollo架构设计 Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源。如果去了解它也可以直接去看它的官方文档。 一、配置中心概念 1、背景 在实际开发中都会与配置打交道,举个简单例子,我们开发项目肯定会连接数据库,mysql也好oracle也好。那么我们 本地环
阅读全文
摘要:分布式事务(1) 2PC和3PC原理 分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题。 分布式事物常见解决方案: 2PC两段提交协议 3PC三段提交协议(弥补两端提交协议缺点) TCC或者GTS(阿里) 消息中间件最终一致性 使用LCN解决
阅读全文
摘要:什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理等 Zookeeper已经成为Hadoop生态系统中的基础组件。 一、分
阅读全文
摘要:思路一:SQL优化 为了具体模拟秒杀这一场景,假设库存表叫做stock,商品数量叫做num,有业务代码计算出的新数目为new_num=num-1,原来执行的SQL为: update stock set num=new_num where id = id=#{id}; 我们可以改进SQL,让数据库根据
阅读全文
摘要:为什么需要应用拆分 我以淘宝技术架构演进为例,淘宝从一个大系统工程向分布式架构演变过程,你就能很清楚的知道为什么要需要进行应用拆分。 1 人员的角度 维护一个代名工程Denali的百万级代码怪兽(虽然物理部署是分离的),从发布到上线,从人员的角度,百号人同时在一个工程上开发,一旦线上出问题,所有代码
阅读全文
摘要:为什么需要单点登录 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。 单点登录在大型网站里使用得非常频繁,例如,阿里旗下有淘宝、天猫等网站,还有背后的成百上千的子系统,用户一
阅读全文
摘要:背景 可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有开源产品ZooKeeper实现的ZAB协议号称超越Paxos。
阅读全文
摘要:本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 缓存概述 缓存概述 缓存的分类 缓存主要分为四类,如下图: 缓存的分类 CDN 缓存 CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相
阅读全文
摘要:互联网当下,数据库的拆分过程基本遵循的顺序是:垂直拆分、读写分离、水平拆分(也称之为分库分表)。 一、垂直拆分 1、什么是垂直拆分? 指的是将一个包含了很多表的数据库,根据表的功能的不同,拆分为多个小的数据库,每个库中包含部分表。 比如:电商系统采用的库为db_eshop,根据用户功能和产品功能,可
阅读全文
摘要:分布式数据层中间件 1.简介 分布式数据访问层中间件,旨在为供一个通用数据访问层服务,支持MySQL动态数据源、读写分离、分布式唯一主键生成器、分库分表、动态化配置等功能,并且支持从客户端角度对数据源的各方面(比如连接池、SQL等)进行监控,后续考虑支持NoSQL、Cache等多种数据源。 2.作用
阅读全文
摘要:NoSQL第一部分 一、什么是NoSQL? 问题:12306在开始诞生的前几年,每到重大节假日,经常“瘫痪”,直接原因就是集中超负荷的访问量。技术原因是它在此期间所采用的国际著名的某大型关系型数据库产品。这里暴露出来的问题特点便是: (1) 传统大型关系型数据库无法更好地解决问题 (2) 在互联网上
阅读全文