MongoDB(二) 集权与安全
1 副本集-Replica Sets1.1 简介MongoDB中的副本集(Replica...
MongoDB(一) 基本入门
1 MongoDB相关概念1.1 目的解决传统关系型数据库(SQL),在三高面前的力不从心 High performance - 对数据库高并发读写的需求 Huge Storage - 对海量数据的高效率存储和访问的需求 High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求 1.2 应用场景 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析 视频直播,使用 MongoDB...
SpringCloudalibaba(四) 分布式事务与Dubbo--rpc通信
1. 分布式事务基础1.1 事务事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销 简单地说,事务提供一种“要么什么都不做,要么做全套”机制 1.2 本地事物本地事物其实可以认为是数据库提供的事务机制 说到数据库事务就不得不说,数据库事务中的四大特性: A:原子性(Atomicity),一个事务中的所有操作,要么全部完成,要么全部不完成 C:一致性(Consistency),在一个事务执行之前和执行之后数据库都必须处于一致性状态 I:隔离性(Isolation),在并发环境中,当不同的事务同时操作相同的数据时,事务之间互不影响 D:持久性(Durability),指的是只要事务成功结束,它对数据库所做的更新就必须永久的保存下来 数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚 1.3...
SpringCloudalibaba(三) 服务网关 链路追踪 消息驱动
1. Gateway–服务网关1.1 网关简介没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用 这样的架构,会存在着诸多的问题: 客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性 认证复杂,每个服务都需要独立认证 存在跨域请求,在一定场景下处理相对复杂 上面的这些问题可以借助API网关来解决 所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务 一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等等 在业界比较流行的网关,有下面这些: 在业界比较流行的网关,有下面这些: Ngnix+lua 使用nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用 lua是一种脚本语言,可以来编写一些简单的逻辑, nginx支持lua脚本 Kong 基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用 问题:...
SpringCloudalibaba(二) 服务治理与配置,负载均衡,服务容错
1. 服务治理–Nacos1.1 基本概念我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题: 一旦服务提供者地址变化,就需要手工修改代码 一旦是多个服务提供者,无法实现负载均衡功能 一旦服务变得越来越多,人工维护调用关系困难 这时候就需要通过注册中心动态的实现`服务治理· 1.1.1 服务治理介绍服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现 服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务 服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实 例的访问 1.1.2...
SpringCloudalibaba(一) 微服务介绍与案例创建
1. 微服务介绍1.1 系统架构演变 架构类型 优点 缺点 单体应用架构 1. 项目架构简单,小型项目的话, 开发成本低2. 项目部署在一个节点上, 维护方便 1. 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护2. 项目模块之间紧密耦合,单点容错率低3. 无法针对不同模块进行针对性优化和水平扩展 垂直应用架构 1. 系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展2. 一个系统的问题不会影响到其他系统,提高容错率 1. 系统之间相互独立, 无法进行相互调用2. 系统之间相互独立, 会有重复的开发任务 分布式架构 抽取公共的功能为服务层,提高代码复用性 系统间耦合度变高,调用关系错综复杂,难以维护 SOA架构 使用注册中心解决了服务间调用关系的自动调节 1. 服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )2. 服务关心复杂,运维、测试部署困难 微服务架构 1. 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展2....
注解
1. 注解概述 注解的概述 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。 注解的作用 对Java中类、方法、成员变量做标记,然后进行特殊处理,至于到底做何种处理由业务需求来决定。 例如:JUnit框架中,标记了注解@Test的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行。 2. 自定义注解 格式 123public @interface 注解名称 { public 属性类型 属性名() default 默认值 ;} 12345public @interface MyBook { String name(); String[] authors(); double price();} 特殊属性 value属性,如果只有一个value属性的情况下,使用value属性的时候可以省略value名称不写!! 但是如果有多个属性,...
反射
1 反射概述 基本概述 反射是指对于任何一个Class类,在”运行的时候”都可以直接得到这个类全部成分。 在运行时,可以直接得到这个类的构造器对象:Constructor 在运行时,可以直接得到这个类的成员变量对象:Field 在运行时,可以直接得到这个类的成员方法对象:Method 这种运行时动态获取类信息以及动态调用类中成分的能力称为Java语言的反射机制。 反射的关键 反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分 反射的作用 可以在运行时得到一个类的全部成分然后操作。 可以破坏封装性。(很突出) 也可以破坏泛型的约束性。(很突出) 更重要的用途是适合:做Java高级框架 基本上主流框架都会基于反射设计一些通用技术功能。 2. 反射获取类对象 方式一:Class c1 = Class.forName(“全类名”) 方式二:Class c2 =类名.class 方式三:Class c3 = 对象.getClass(); 12345678910111213141516/** ...
REST风格
1. REST简介 REST(Representational State Transfer),表现形式转换 传统风格资源描述形式 localhost/user/getById?id=1 localhost/user/saveUser REST风格描述形式 localhost/users/1 localhost/user/users 优点 隐藏资源的访问行为,无法通过地址得知对资源是何种操纵 书写简化 2....