- 浏览: 44786 次
- 性别:
- 来自: 深圳
文章列表
摘要: (1)系统角色 Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。1 Monitor: 统计服务的调用次调和调用时间的监控中心。
一、Dubbo的设计角色
(1)系统角色Provider: 暴露服务的服务提供方。
微服务是当下的热门话题,今天来聊下微服务中的一个敏感话题:如何保证微服务的数据一致性。谈到分布式事务,就避免不了CAP理论。
CAP理论是指对于一个分布式计算系统来说,不可能同时满足以下三点:
1. 一致性(Consistence) (等同于所有节点访问同一份最新的数据副本)
2. 可用性(Availability)(对数据更新具备高可用性)
3. 容忍网络分区(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。)
对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来 ...
数据结构中的"表"的理解可以和数据库的表一样来理解,只是概念上的理解即:表有很多条记录(数据元素),每条记录都有一样的形式,由很多个数据项组成。不过了解数据结构的表就要关注它数据在内存中的存储形式。
...
Hashtable和HashMap在Java面试中相当容易被问到,甚至成为了集合框架面试题中最常被考的问题,所以在参加任何Java面试之前,都不要忘了准备这一题。
我们先看2个类的定义
public class Hashtable
extends Dictionary
implements Map, Cloneable, <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_bla ...
什么是spring Aop
AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当 ...
<!-- Baidu Button BEGIN -->
1. 第一范式
确保数据表中每列(字段)的原子性。
如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。
例如:user用户表,包含字段id,username,password
2. 第二范式
在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。
如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。
例如:一个用户只有一种角色,而一个角色对应多个用户。则可以按如下方式建立数据表关系,使其满足第二范式。
user用户表,字段id,username,p ...
1. 写一个单例类。
答:单例模式主要作用是保证在 Java 应用程序中,一个类只有一个实例存在。下面给出两种不同形式的单例:
第一种形式:饿汉式单例
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
第二种形式:懒汉式单例
pu ...
1、继承Thread类创建线程类
public class FirstThreadTest extends Thread {
public void run(){
System.out.println("这里是线程的执行方法");
}
public static void main(String[] args) {
//获得线程
FirstThreadTest thread = new FirstThreadTest();
System.out.println(&qu ...
MySQL处理大规模业务数据的方案一般都是分库分表.最开始一般都选择垂直拆分.比如电商网站,可能按照家电,图书,母婴等商品分类进行拆分.这样做的好处是拆分简单,并且没有破坏数据库事务.但是随着业务的增长,比如图书分类的订单数据表已经到达了10个T的规模.就需要考虑做水平拆分了.把逻辑上一个表的数据,分别存放到不同的数据库服务器.水平拆分的好处是
<!-- Baidu Button BEGIN -->
MySQL分库分表总结:
单库单表 :
单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。
单库多表 :
1、什么是分布式事务
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
2、分布式事务的产生的原因
2.1、数据库分库分表
当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此不做解释,以后有空详细说,简单的说就是原来的一个数据库变成了多个数据库。这时候,如 ...
总的来说,java中的IO和NIO主要有三点区别:
IO
NIO
面向流
面向缓冲
阻塞IO
非阻塞IO
无
选择器(Selectors)
1.面向流与面向缓冲
背景
Java线程:由开始的单线程,到通过new Thread()创建的多线程,再到现如今的线程池,Java多线程编程的效率和性能有了很大的提升
Reactor模型:基于事件驱动,适合处理海量I/O事件
1) 单线程模型,所有的IO操作都在一个NIO线程上完成
存在性能和可靠性上的问题
2) 多线程模型,有一组NIO线程处理IO操作
有一个专门的NIO线程-Acceptor线程用于监听服务端,接收客户端的TCP连接请求;
有一个NIO线程池,负责消息的读取、发送、编码、解码;
一个NIO线程能负责N条链路,一条链路只能由 ...
Redis 支持服务器端的数据操作:Redis 相比 Memcached 来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在 Memcached 里,你需要将数据拿到客户端来进行类似的修改再 set 回去。这大大增加了网络 IO 的次数和数据体积。在 Redis 中,这些复杂的操作通常和一般的 GET/SET 一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么 Redis 会是不错的选择。
内存使用效率对比:使用简单的 key-value 存储的话,Memcached 的内存利用率更高,而如果 Redis 采用 hash 结构来做 key-value 存储,由于其组合 ...