我正在使用流星服务器 private fun downloadPdf(fileName: String?, fileExtension: String?, destinationDirectory: String?, url: String?) {
val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
val uri = Uri.parse(url)
val request = DownloadManager.Request(uri)
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
request.setDestinationInExternalPublicDir(destinationDirectory, fileName + fileExtension)
val downloadId = downloadManager.enqueue(request)
thread {
var downloading = true
while (downloading){
val query = DownloadManager.Query()
query.setFilterById(downloadId)
val cursor = downloadManager.query(query)
if(cursor.moveToFirst()){
val bytesDownloaded = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR))
val bytesTotal = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES))
if(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL){
downloading = false
}
val progress = ((bytesDownloaded * 100L)/bytesTotal).toInt()
runOnUiThread {
Log.i("pritishsawantprogress",progress.toString())
}
cursor.close()
}
}
}
}
我想创建一个备份服务器。
如果主服务器出现故障,用户应自动转移到备用服务器,以免造成任何停机时间。
我如何实现这种行为。
谢谢。
答案 0 :(得分:1)
您可以使用Phusion Passenger之类的进程生成工具来使您的应用程序失效保护。如果您的应用程序崩溃,旅客会立即将其重新启动。
关于此的一些资源
https://github.com/phusion/passenger/wiki/Phusion-Passenger:-Meteor-tutorial
https://www.phusionpassenger.com/docs/tutorials/installation/meteor/
或使用一些container orchestration,并在多台计算机上使用您的应用程序。如果一个实例失败,则您的应用应该仍然可用。
在两种情况下:在单独的服务器上安装mongodb 。这也是为什么需要在Meteor部署上定义MONGO_URL
环境变量的原因,因此您的应用程序进程与数据库进程是分开的。
在这种设置中,您无需将发生故障的数据“提交”到单独的服务器,我认为这在生产环境中甚至可能不是现实的方法。