分布式文件上传服务架构设计

背景由于某业务需要,需要对文件上传服务进行一次架构调整,初步考虑几点: 水平扩展性:上传worker节点按需弹性部署 负载均衡:根据上传worker节点的状态随时均衡调度 支持断点续传:即需要提供分片上传接口 支持秒传:对于上传过的相同文件直接响应完成 就近原则:通过离用户最近的区域节点上传文件,通过CDN节点下载文件 初步架构逻辑架构图如图所示: 重点功能模块说明: - 上传调度服务 (...
阅读(30) 评论(0)

golang内存管理

最近粗略看了下golang内存初始化相关的代码,结合大牛们的一些源码分析,自己整理了一下学习总结。几个关键数据结构 mspan 由mheap管理的页面,记录了所分配的块大小和起始地址等 mcache 与P(可看做cpu)绑定的线程级别的本地缓存 mcenter 全局空间的缓存,收集了各种大小(67种)的span列表 mheap 分配内存的堆分配器,以8kb进行页管理 fixalloc 固定...
阅读(65) 评论(0)

golang知识点整理(持续更新)

对golang的整体理解 Go是一种编译型语言,结合了解释型语言的优点(如调试效率,跨平台),动态类型语言的优点(如开发效率),以及静态类型的优点(如安全性); Go是静态类型语言,类型系统没有层级,因此无需在类型关系定义上耗费过多时间; Go是垃圾回收型的语言,并为并发执行与通信提供了基本的支持; Go目标是要成为一种现在的系统语言,不过目前更多用来构建支持高性能高并发web服务。 列出常用的一些...
阅读(81) 评论(0)

[Golang]另一角度理解goroutine

偶然看到一条关于goroutine有趣的QA: https://news.ycombinator.com/item?id=12459841 发现可以以另一种方式来理解goroutine,欢迎拍砖。关键概念说明:M: machine, M对应于内核线程; P: processor, P是一种在M上运行的context, 维护了goroutine的列表; G: goroutine核心结构, 维护了g...
阅读(172) 评论(0)

理解TCP/IP协议栈(3)

翻译自: https://www.cubrid.org/blog/understanding-tcp-ip-network-stack如何处理中断及接收包中断处理很复杂, 而你需要理解与之相关的到达包处理的性能. Figure 5展示了一个中断处理的流程. Figure 5: Processing Interrupt, softirq, and Received Packet. 假设CPU 0...
阅读(163) 评论(0)

理解TCP/IP协议栈(2)

翻译自: https://www.cubrid.org/blog/understanding-tcp-ip-network-stack数据接收现在来看看数据是如何接收的. 数据接收就是网络协议栈处理到达数据的过程. 如Figure 3所示: Figure 3: TCP/IP栈各层如何处理到达数据的过程. 首先NIC将包写入它的内存. 它会通过CRC来检查包是否有效, 然后将数据发送到主机的内存...
阅读(229) 评论(0)

操作系统知识点整理(持续更新)

基础概念 操作系统的四个特性 1. 并发: 同一时间间隔内支持执行多个任务, 对于一个核则是交替执行; 2. 共享: 硬件资源或数据资源支持多个进程共享; 3. 异步: 并发情况下, 一个程序会陆陆续续被执行,完成时间不可预知; 4. 虚拟: 物理实体转化为逻辑实体,如虚拟内存。 操作系统的基本功能 1. CPU管理, 作业调度 2. 存储管理, 数据存取 3. 设备管理, 与外围设备交互 4. 接...
阅读(211) 评论(0)

ElasticSearch数据备份与恢复

ElasticSearch数据备份与恢复最近线上业务ES日志量过于庞大, 达到500亿条(约30TB)记录,需要对旧的索引进行归档处理。用scan和scroll的方式导出备份基本是不可能的了, 本文主要是记录(Ubuntu环境)通过sshfs共享文件系统来进行快照方式备份数据。 假设ES集群有三个节点:192.168.1.10 192.168.1.11 192.168.1.121. 创建共享目录...
阅读(292) 评论(0)

理解TCP/IP协议栈(1)

翻译自: https://www.cubrid.org/blog/understanding-tcp-ip-network-stack目前我们的internet服务都是基于TCP/IP来开发的, 无法想像没有TCP/IP的Internet会是什么样子. 因此无论是在逻辑调整, 故障排除,还是发现新技术方面, 理解网络中数据的传输原理会帮助我们多方面提高服务性能表现. 本文会介绍基于Linux系统及...
阅读(266) 评论(0)

[Linux]理解用户空间与内核空间

源文: http://learnlinuxconcepts.blogspot.com/2014/02/kernel-space-and-user-space.html理解用户空间及内核空间对于增强理解Linux内核知识是非常重要的。 这里的用户空间及内核空间对应于虚拟地址空间. 每个linux中的进程占用独立的虚拟空间. 在32位架构linux系统中, 用户空间至少对应3GB虚拟空间, 而内核空间至...
阅读(211) 评论(0)

[shell]curl结果获取http header的问题

在通过curl请求http获取response header时, 发现字符串拼接一个问题。 比如以下程序:hadoop@1:~$ ct=$(curl -s -I http://www.baidu.com | grep Content-Type | awk '{print $2}') hadoop@1:~$ echo $ct text/html hadoop@1:~$ echo $ct"_postf...
阅读(361) 评论(0)

Spark Streaming从Flume读取数据流(pull模式)

1.jar包准备参考官方文档: http://spark.apache.org/docs/latest/streaming-flume-integration.html当前测试flume使用到的jar包版本如下:spark-streaming-flume-sink_2.11-2.2.0.jar scala-library-2.11.8.jar commons-lang3-3.5.jar这几个jar包...
阅读(212) 评论(0)

flume-kafka部署总结

部署准备配置日志收集系统(flume+kafka), 版本:apache-flume-1.8.0-bin.tar.gz kafka_2.11-0.10.2.0.tgz假设部署在三个工作节点的ubuntu系统环境中:192.168.0.2 192.168.0.3 192.168.0.4flume配置说明假设flume的工作目录在/usr/local/flume, 监测某日志文件(如/tmp/tes...
阅读(247) 评论(0)

hadoop-spark错误问题总结(二)

1.Caused by: java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class具体错误日志:Caused by: java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class at org.elasticsearc...
阅读(396) 评论(0)

shell批量对比不同host的目录文件

假设有一个数据集群, 每个集群的目录/data/下面有很多子目录, 子目录内包含很多文件; 每两个节点的/data/目录下所有文件理论上要保持一致(比如fastdfs的两副本模式)。现在需要快速的对每两台机器上的/data目录下的文件检测是否全部一致, 那么可以怎么做呢? 一个思路是利用shell实现, 每次将两台机器上的文件全部扫描并排序到一个文件内, 然后拉取到本地上进行对比。具体示例代码(同...
阅读(224) 评论(0)

[golang]简单文件上传服务

利用net/http库及gorilla/mux库实现了一个简单的文件上传服务, 示例如下:package mainimport ( "fmt" "github.com/gorilla/mux" "io" "net/http" "os" )const uploadHTML = ` 选择文件</titl...
阅读(322) 评论(0)

python3 pika之连接断开问题

python3 pika库连接断开问题问题描述在消费rabbitMQ队列时, 每次进入回调函数内需要进行一些比较耗时的操作;操作完成后给rabbitMQ server发送ack信号以dequeue本条消息。 问题就发生在发送ack操作时, 程序提示链接已被断开或socket error。源码示例#!/usr/bin #coding: utf-8import pika import time USER...
阅读(895) 评论(0)

[golang]pprof性能分析工具

1. 关于pprofpprof是golang程序一个性能分析的工具,可以查看堆栈、cpu信息等。2. 源码示例package mainimport ( "flag" "log" "net/http" _ "net/http/pprof" "sync" "time" )func Counter(wg *sync.WaitGroup) { time...
阅读(945) 评论(0)

[python]map方法与并行执行

文章也可参考: 我的个人博客1. 内建方法map内建map方法可以通过一个序列的方式来实现函数之间的映射, 并且串行执行。如:import time from datetime import datetimedef add(x, y): print(datetime.now(), "enter add func...") time.sleep(2) print(datetim...
阅读(576) 评论(0)

[mysql]python3实现并发访问水平切分表

场景说明假设有一个mysql表被水平切分,分散到多个host中,每个host拥有n个切分表。 如果需要并发去访问这些表,快速得到查询结果, 应该怎么做呢? 这里提供一种方案,利用python3的asyncio异步io库及aiomysql异步库去实现这个需求。代码演示import logging import random import asyncio from aiomysql import c...
阅读(696) 评论(0)
406条 共21页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1778423次
    • 积分:18901
    • 等级:
    • 排名:第521名
    • 原创:303篇
    • 转载:83篇
    • 译文:20篇
    • 评论:270条
    学习交流
    Email: moxiaomomo@gmail.com
    QQ:    809444138
    博客专栏
    最新评论