Разветвление: на основе BSF
Данное разветвление является разработкой, основанной на BSF.
Изменения:
Можно напрямую использовать установочный пакет «Установка платформы диспетчеризации задач» для пробной установки.
Новые функции: 5. Добавлена внутренняя функция мгновенного уведомления Redis, оптимизирующая связь между веб и узлами. 6. Добавлена общая функция конфигурации, позволяющая всем задачам совместно использовать эти конфигурации. 7. Устранена ошибка, из-за которой узел мониторинга задач постоянно выдавал ошибку.
Проблемы компиляции
После загрузки исходного кода с помощью git некоторые разработчики не смогли скомпилировать код (довольно загадочная проблема). Можно попробовать решить проблему следующими способами:
Причина: BSF ссылается на system.Net.Http версии 2.0, но Windows по умолчанию использует .NETFramework версии 4.5, который содержит system.Net.Http версии 4.0.
.NET Простая платформа диспетчеризации задач
Используется для задач DLL и EXE, включая загрузку задач, изоляцию задач, выполнение диспетчеризации, контроль доступа, мониторинг, управление, ведение журнала, предупреждение об ошибках, анализ производительности и т. д.
Платформа разработана на основе Quartz.NET для функций диспетчеризации задач с использованием C# кода и поддерживает выражения corn и пользовательские расширения выражений corn.
Архитектура разработана в виде плагинов, обеспечивая хорошую расширяемость функций, стабильность, простоту и удобство для дальнейшей разработки функций третьими лицами.
Поддерживает многоузловые кластеры, облегчая эффективное распределение ресурсов кластера серверов и изоляцию задач.
Поддерживает оповещения об ошибках в форме электронной почты, что облегчает обработку задач и управление ими.
Dyd.BaseService.TaskManager Исходный код развёртывания
(Благодарим студента Юй Чжунляна за организацию)
Группа открытого исходного кода: .NET Открытый базовый сервис 851340557 (У всех есть основная работа, и они могут не иметь возможности быстро реагировать и отслеживать решение проблем. Пожалуйста, поймите.)
Справочные документы
— (Соответствующие документы, пожалуйста, обратитесь к основной ветке, но основная ветка относительно старая)—
Пример демонстрационной задачи
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dyd.BaseService.TaskManager.Demo
{
/// <summary>
/// 任务调度平台 任务插件的写法demo及说明
/// </summary>
public class DemoTask : XXF.BaseService.TaskManager.BaseDllTask
{
/// <summary>
/// 任务调度平台根据发布的任务时间配置,定时回调运行方法
/// 开发人员的任务插件必须要重载并该方法
/// </summary>
public override void Run()
{
/*
* this.OpenOperator 用于任务调度平台提供给第三方使用的所有api接口封装
*/
/*获取当前任务dll安装目录*/
this.OpenOperator.GetTaskInstallDirectory();
/*打印一条日志到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】*/
this.OpenOperator.Log("这里打印一条日志到任务调ду платформы");
/*打印一条错误到任务调度平台,因为日志会存到平台数据库,所以日志要精简,对任务出错时有分析价值【注意:不要频繁打印无用的,非必要的,对分析无价值的日志信息】
*后续任务会有增加优先级区分,根据任务的优先级,错误的出现频率等,错误日志会定期推送到开发者邮箱和短信*/
this.OpenOperator.Error("Здесь печатается одна ошибка журнала на платформу диспетчеризации задач", new Exception("Сообщение об ошибке"));
/*从数据库获取任务的临时数据,临时数据以jason的形式保存在数据库里面,便于任务上下文的恢复和信息传递【注意:不应用于"频繁的"存储"大量的"临时数据,会操作网络耗时和数据库性能差】*/
var databasetempinfo = this.OpenOperator.GetDataBaseTempData<DemoTaskDatabaseTempInfo>();
if (databasetempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候配置临时数据也可。
{
databasetempinfo = new DemoTaskDatabaseTempInfo();
databasetempinfo.LastLogID = 0;
}
/*将任务的临时数据持久化到数据库中,临时数据以json的形式保存在数据库里面,便于任务上下контекста и информации передачи【注意:не применяется к"часто"хранения"большого количества"временных данных,будет работать сеть и база данных производительность】
Если временные данные используются для следующего использования, необходимо выполнить этот метод, иначе он не сможет получить следующий раз【Примечание: выполнение этого метода, текущие временные данные могут быть сброшены до нуля, чтобы облегчить освобождение памяти】*/
this.OpenOperator.SaveDataBaseTempData(databasetempinfo);
/*从本地安装目录中获取任务的临时数据,临时数据以jason的形式保存在本地,便于任务上下文的恢复和信息传递【注意:本地临时数据一般用于保存"大量的"临时数据】*/
var localtempinfo = this.OpenOperator.GetLocalTempData<DemoTaskLocalTempInfo>();
if (localtempinfo == null)//若任务第一次运行,可能没有临时数据。当然也可以在发布任务的时候上传临时数据json至安装压缩包中也可。
{
localtempinfo = new DemoTaskLocalTempInfo();
localtempinfo.file = new byte[0];
}
/*将任务的临时数据持久化到本地安装目录中,临时数据以json的形式保存在本地安装目录里面,便于任务上下文的恢复和信息传�чту【注意:本地临时数据一般用于保存"大量的"临时数据】
В этом тексте нет ошибок, требующих перевода. **Текст на русском языке:**
Если временные данные используются повторно, необходимо выполнить этот метод, иначе при следующем использовании они могут быть не получены. Обратите внимание: выполнение этого метода может привести к тому, что текущие временные данные будут сброшены в null для освобождения ресурсов памяти.
this.OpenOperator.SaveLocalTempData(localtempinfo);
{
string msg = "Выполнение бизнес-операции...";
msg += this.AppConfig["sendmailhost"];
Debug.WriteLine(msg);
System.IO.File.AppendAllText(this.OpenOperator.GetTaskInstallDirectory() + "бизнес.txt", msg);
}
}
///
base.TestRun();
}
}
///
Изображения:
Будущие идеи:
Перенос отказавших задач: если задача продолжает отказывать n раз или частота отказов высока, можно рассмотреть запуск задачи на другом узле или в кластере узлов. Это позволит обеспечить восстановление после отказа.
Балансировка нагрузки задач: несколько задач выполняются параллельно для выполнения высоконагруженных задач на нескольких узлах.
Разделение задач: родительская задача может создавать несколько дочерних задач, управлять ими, планировать их выполнение, восстанавливать после отказов и выдавать предупреждения.
Процессуализация и управление задачами.
.NET Open Source Development Learning Path:
Существует три пути изучения и разработки проектов с открытым исходным кодом на платформе .NET:
Путь 1: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → стать администратором группы QQ, связанным с проектом → решать повседневные проблемы проекта с открытым исходным кодом → обобщать и систематизировать документацию по проектам с открытым исходным кодом и делиться ею с другими или продвигать её → стать разработчиком и участником проекта git.
Путь 2: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → обнаружить ошибку во время фактического использования и отправить ошибку администратору соответствующего проекта.
Путь 3: скачать исходный код проекта с открытым исходным кодом → изучить проект с открытым исходным кодом → успешно развернуть проект (с помощью документации по проекту с открытым исходным кодом или помощи администратора группы QQ) → создать ветку проекта с открытым исходным кодом самостоятельно → отправить новую функцию в ветке официальному разработчику проекта → официальный разработчик проекта объединит новую функцию и выпустит новую версию в соответствии с ситуацией проекта.
О концепции экосистемы .NET с открытым исходным кодом:
Экосистема .NET с открытым исходным кодом представляет собой замкнутый цикл, состоящий из официальных проектов с открытым исходным кодом, участия третьих сторон в изучении, улучшениях третьих сторон и отправке новых функций или ошибок, объединении новых функций или исправлении ошибок официальными лицами и выпуске новых версий.
Почему открытый исходный код? Экосистема .NET с открытым исходным кодом сама по себе слаба, но сильна благодаря вам и мне, постоянно учась, делясь по крупицам, помогая друг другу и совместно создавая хорошую экосистему .NET.
Идея открытого исходного кода: открытый исходный код — это отношение, обмен — это дух, обучение всё ещё требует настойчивости, прогресс всё ещё требует усилий, экосистема .NET становится лучше благодаря вам и мне.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )