Oracle DataGuard 是一种跨多个 Oracle 引擎实例复制 Oracle RDBMS 中存储的数据的技术。我想知道 DataGuard 是否真的为 RDBMS 提供了线性可扩展性。您有使用 DataGuard 的经验吗?它在重负载条件下表现如何?
我有 socket.io 应用程序,必须处理很多命名空间。我想知道 socket.io 实例可以处理的命名空间数量的限制是多少,如果我创建 10k 命名空间,是否有任何问题。我如何扩展以在多个 socket.io 实例(例如,每个实例处理 1k 命名空间)中进行类似 scharding 的操作。实际上,我可以扩展以支持多个用户,但我的所有实例都必须处理所有命名空间。
更新1:
我试图解决的问题如下,我有一个多人纸牌游戏(如扑克),每个房间都有 4 个玩家在玩游戏,由 socketio 命名空间建模。由于我期望有数千个并发玩家,我的 socketio 实例应该处理这个数量的命名空间。我已经实现了Socket.io 网站中解释的可扩展性解决方案。当我向外扩展时,我在新实例中运行这个节点片段,以便它可以处理之前创建的所有命名空间。
rooms.forEach(function(room){
var socketRoom = io.of('/room/' + room.id)
.on('connection', function(mySocket){
return handleTableSocket(mySocket, socketRoom, room);
});
});
Run Code Online (Sandbox Code Playgroud)
那么用socketio命名空间对每个游戏室建模是个好主意吗?如果命名空间的数量增加怎么办?
干杯
我有一个简单的 Node js Web 套接字服务器,如下所示:
var ws = require("nodejs-websocket")
var connectionCount = 0;
console.info("Node websocket started @ 8001");
var server = ws.createServer(function (conn) {;
console.log("New connection", ++connectionCount);
conn.on("close", function (code, reason) {
console.log("Connection closed")
});
}).listen(8001)
Run Code Online (Sandbox Code Playgroud)
该服务器需要 65k 个连接(因为一个端口最多需要 65k 个连接)。如何扩展服务器以使其能够容纳超过 100k 个连接?
我最近打开了三个具有不同端口的此类服务器,并尝试使用 nginx 进行负载平衡,但无济于事,因为 nginx 服务器也只能接受 65k 连接。nginx 配置在这里
upstream localhost {
server localhost:8001;
server localhost:8002;
server localhost:8003;
}
server {
proxy_read_timeout 3600s;
listen 8000;
location / {
proxy_pass http://localhost;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; …Run Code Online (Sandbox Code Playgroud) 我解码 CSV 文件(使用https://hexdocs.pm/csv/),生成一个流,然后使用Enum.filter. 我的问题是处理时间并不随着 CSV 文件的大小线性增长:
% wc -l long.csv
10000 long.csv
% time mix run testcvs.exs long.csv
mix run testcvs.exs long.csv 3.08s user 0.50s system 242% cpu 1.479 total
% wc -l verylong.csv
100000 verylong.csv
% time mix run testcvs.exs verylong.csv
mix run testcvs.exs verylong.csv 98.08s user 3.24s system 117% cpu 1:25.93 total
Run Code Online (Sandbox Code Playgroud)
应该需要十倍的时间,但实际上需要五十七倍的时间。绝对不可扩展。这是否意味着Enum.filter不使用流式传输而是将所有内容加载到内存中?是否有更可扩展的方法来过滤流?
代码:
Enum.at(System.argv(), 0)
|> File.stream!([:read], :line)
|> CSV.decode([separator: ?;])
|> Enum.filter(fn {:ok, line} -> Enum.at(line, 11) == "" end)
Run Code Online (Sandbox Code Playgroud) 我碰到了一条令我感到疑惑的评论:如果您使用分片方法来提高数据库的可伸缩性,是否意味着数据库已被非规范化?您可以有一个规范化的分片数据库吗?
我只想在这里试水.您是否认为使用Python构建大规模社交网络是否值得?鉴于Python Web开发仍然在如此大规模的实验中,您是否客观地认为其相对于PHP(高性能面向对象执行)的所谓优势将值得重新创建一些(或将是很多?)车轮?使用没有框架或像Pyramid(以前的Pylons)的框架,而不是Django.
据我所知,可以分发多层应用程序以利用可伸缩性.也就是说,当您的Web应用程序需要的资源多于单个服务器可以提供的资源时,您只需分发您的应用程序.
您可以将持久层放在一个服务器中,将业务层放在另一个服务器中,将演示文稿放在第三个服务器中.
此外,您可以将业务层划分为多个服务,并将每个服务放在单独的服务器中以应对这些请求.
因为多层应用程序本质上是通过SOAP,套接字,.Net Remoting或RMI等中间件进行通信的组件,所以通过进一步分发其组件来扩展应用程序将相当容易.
问题是,使用MVC架构而不是N层架构设计的应用程序怎么样?据我所知,模型,视图和控制器驻留在一台机器上,那么有人如何分发MVC架构的Web应用程序?
问候,
例如,这是内存中的一个当前实现
String companies [] = {"Alice Berned","Beyonce Cathy","Kelly Boldt"};
要求是在运行时动态扩展此目录.记录可能多达数千.数据结构应该有助于搜索,添加,删除等基本功能.
我的解决方案
我的第一个想法是使用ArrayList,易于获取和添加.
问题:有什么好方法可以解决这个问题吗?
我是否需要一些第三方工具(如load runner)来进行Web应用程序的可伸缩性测试?或者我可以使用selenium为我执行此操作.请指导.
谢谢
selenium scalability web-applications load-testing performance-testing
我目前正在计划一个社交媒体应用程序 - 尤其是后端.基本上我有我想要使用SQL的所有社交方面(我猜是PostgreSQL),但我也有列表中的地理位置组织(这么多对一),这将很可能得出最大的数据量.我知道PostgreSQL有用于GIS功能的模块,我最初的想法只是为了简单而使用PostgreSQL,只是为了简单起见,因为Geolocation搜索的性能对于两个系统都应该是相同的,如果不支持PostgreSQL的话.我也可以在PostgreSQL中使用JSON Type,因此它基本上具有MongoDB所涵盖的最明显的优势.
另一方面,我担心可伸缩性,因为地理定位将成为最大的数据块,并且表格可能会有很多行.
所以我现在的想法是在MongoDB中实现地理定位,具有易于扩展,易于使用的地理位置搜索,并嵌入例如评论/喜欢地理定位直接进入文档,这将使地理定位读取/搜索更容易,但我再次不得不将这些数据与来自SQL的社交数据相结合,例如,获取评论地理位置的所有用户,并从PostgreSQL获取他们的个人资料信息并"手动"组合它.尽管部分可以在前端完成,但为我节省了大量资源.
我不确定这个想法有多好,如果我真的在那里帮忙.
postgresql scalability geolocation mongodb database-performance
scalability ×10
architecture ×1
c10k ×1
distribution ×1
elixir ×1
geolocation ×1
java ×1
load-testing ×1
mongodb ×1
nginx ×1
node.js ×1
oracle ×1
performance ×1
php ×1
postgresql ×1
python ×1
rdbms ×1
replication ×1
selenium ×1
socket.io ×1
websocket ×1