-
负载均衡
DNS 负载均衡
开始呢,我们的应用只有一台web-server。那么你希望:
输入guduyan.com就能定位该server!
那很简单,只要在DNS里配上域名和你的server映射关系,就能访问到啦!
好,现在呢,多了一台web-server,你就可以通过在DNS里加一条配置,以DNS轮询方式进行负载均衡。
Nginx+DNS
现在假设,我们多了一些需求啊。你的系统按照功能模...
2019-01-14 10:29:09 |
Distributed
-
Redis 是什么?redis 的应用场景有哪些?
Redis 是什么?
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。
它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志和半径查询的地理空间索引。
中文官网
Redis 使用场景
分布式锁
Redis 分布式锁设计
计数器(string)
如知乎每个问题的被浏览器次数
set key 0
in...
2019-01-14 10:29:09 |
Cache
-
java 浅拷贝,深度拷贝与属性复制
问题
日常工作中,我们希望复制一个对象A的属性到对象B,且保证二者的变化不会互相影响。
直接赋值,肯定是无法满足的。
深度拷贝与浅拷贝
概念
浅复制(浅克隆)
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。
换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
深复制(深克隆)
被复制对象的所有变量都含有与原来的对象相同...
2019-01-09 15:13:13 |
Java
-
Java Thread 小结
基础知识
java thread
使用线程的目的
用多线程只有一个目的,就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。
多线程,并行与并发
很多人都对其中的一些概念不够明确,如同步、...
2019-01-09 00:44:18 |
Java
-
Greenplum Database-02-sharing nothing/everything/disk/memory
业务背景
当今世界是一个信息化的世界,我们的生活中无论是生活、工作、学习都离不开信息系统的支撑。
而信息系统的背后用于保存和处理最终结果的地方就是数据库。因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问题,则意味着整个应用系统也会面临挑战,从而带来严重的损失和后果。
如今“大数据”这个词已经变得非常流行,虽然这个概念如何落地不得而知。但可以确定的是,随着物联网、移动应用的兴起...
2019-01-09 00:44:18 |
Database
-
Greenplum Database Greenplum 数据库
greenplum
Experience Greenplum Database , an open-source massively parallel data platform for analytics, machine learning and AI.
greenplum 与 postgresql
greenplum是利用了 postgresql 数据库的框架,也就相当于说是,G...
2019-01-09 00:44:18 |
Database
-
算法之最大值、最小值
问题
求一个随机数组的最大值和最小值。
排序
可以首先对数据排序,然后获取。
本文暂时不考虑排序的情况,前提是数组乱序。
常见方式
遍历
最简单的就是直接遍历数组。
如何从n个数里找到最大值与最小值?
很容易想到,用一个循环找到最大值和最小值,就能搞定。
(int, int) find_max_min(int arr[n]){
int max = -infinit...
2019-01-07 11:29:47 |
Althgorim
-
message 顺序性如何保证?
问题
很多业务都需要考虑消息投递的顺序性:
单聊消息投递,保证发送方发送顺序与接收方展现顺序一致
群聊消息投递,保证所有接收方展现顺序一致
充值支付消息,保证同一个用户发起的请求在服务端执行序列一致
消息顺序性是分布式系统架构设计中非常难的问题,有什么常见优化实践呢?
折衷一:以客户端或者服务端的时序为准
不管什么情况,都需要一个标尺来衡量时序的先后顺序,可以根据业务场景,以客...
2019-01-07 11:29:47 |
Distributed