joosing / fireball Goto Github PK
View Code? Open in Web Editor NEWHigh-performance, Large file transfer microservice for any language, any framework
License: Apache License 2.0
High-performance, Large file transfer microservice for any language, any framework
License: Apache License 2.0
When requesting to upload a large file (test file size 1GB), an HTTP 500 error response is received. The detailed response header is as follows.
After the file upload request, if there is no response for a certain period of time, the file client closes the connection with the server and ends the transaction. This is to prevent the client from waiting infinitely for a response in an abnormal situation where the server cannot respond. If the timeout period is not specified, connection resources may be leaked. However, we have difficulty specifying the timeout time. The time to save a file varies greatly depending on the file size and the performance of the storage device. Therefore, it is difficult to have a consistent standard for exactly how long a client should judge a server to be abnormal. In the problem situation above, the client was set to wait 60 seconds, but when transferring a 1GB file using a slow storage device (USB 3.0), the file upload could not be processed within 60 seconds, causing problems.
Large file uploads are internally split into 5 MB chunks. And the server has a mechanism to send a response to the client when the last received chunk is uploaded. To solve this problem, whenever the server uploads one 5MB chunk, it can send an additional intermediate response to the client indicating that it is currently processing normally. The client can properly wait for the normal processing time of fixed-size 5MB chunks.
Reliably upload (or download) files without being affected by file size or storage media performance.
0.0.1
The design of the file upload and download APIs doesn't provide the right concepts. For example,
TcpClient, TcpServer 메서드들의 반환 타입이 비동기적인 처리를 지원하도록 Future를 반환하도록 합니다.
The information below is gathered from the following blog posts. (https://techblog.woowahan.com/11392/)
현재 TcpClient, TcpServer 메서드들의 반환 타입이 중구난방입니다. netty와 java 패키지의 Future를 섞어서 사용해서 사용 상에 혼돈이 생길 수 있다고 판단됩니다.
It would be nice to have a node manager up front that installs and manages fireball instances on the network like a hadoop node manager.
HTTP methods and URIs allow you to identify the behavior of the file server and request actions. This provides a more flexible and extensible interface to the servers. In addition, you can utilize a variety of HTTP-based load testing and monitoring tools to make testing and operations easier.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.