Skip to content

Чукарев Михаил Лаб. 2 Группа 6511#81

Open
Mishachuu wants to merge 18 commits intoitsecd:mainfrom
Mishachuu:main
Open

Чукарев Михаил Лаб. 2 Группа 6511#81
Mishachuu wants to merge 18 commits intoitsecd:mainfrom
Mishachuu:main

Conversation

@Mishachuu
Copy link
Copy Markdown

ФИО: Чукарев Михаил
Номер группы: 6511
Номер лабораторной: 2
Номер варианта: 17
Краткое описание предметной области: Транспортное средство
Краткое описание добавленных фич:

  • Реализован алгоритм балансировки QueryBased
  • Реализован ApiGateway и подняты три реплики сервиса генерации

@github-actions github-actions bot added In progress Код в процессе проверки Lab 2 Лабораторная №2. Балансировка нагрузки labels Apr 1, 2026
@github-actions github-actions bot requested a review from danlla April 1, 2026 07:33
<UnorderedListItem><Link To="https://puginarug.com/">Ссылка на форк</Link></UnorderedListItem>
<UnorderedListItem>Номер <Strong>№1 "Кэширование"</Strong></UnorderedListItem>
<UnorderedListItem>Вариант <Strong>№17 "Транспортное средство"</Strong></UnorderedListItem>
<UnorderedListItem>Выполнена <Strong>Чукарев Михаил 6511</Strong> </UnorderedListItem>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Либо Выполнил, либо нужно склонение поменять

Comment on lines +12 to +24
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
var allowedOrigins = builder.Configuration
.GetSection("Cors:AllowedOrigins")
.Get<string[]>() ?? [];

policy.WithOrigins(allowedOrigins)
.AllowAnyMethod()
.AllowAnyHeader();
});
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В принципе настройку cors можно убрать отсюда и вынести в ApiGateway, так как браузер теперь работает с ним, а не с генератором

public Task<Response<ServiceHostAndPort>> LeaseAsync(HttpContext httpContext)
{
var cumulative = 0.0;
var roll = Random.Shared.NextDouble();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно тут домножать на сумму элементов weights, которую по-хорошему вынести в приватное поле

Тогда не нужно будет следить за тем, что сумма весов равна 1

Comment on lines +24 to +25
return Task.FromResult<Response<ServiceHostAndPort>>(
new OkResponse<ServiceHostAndPort>(services[^1].HostAndPort));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше рандомный сервис тут возвращать, иначе если что-то пойдет не так и эта ветка будет выполняться, то последний сервис будет перегружен

});

var weights = builder.Configuration
.GetSection("WeightedRandom:Weights")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот путь до весов не соответствует тому, что в appsettings.json

]
},
"WeightedRandom": {
"vehicles": {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Секцию vehicles нужно удалить и перенести секцию Weights в WeightedRandom

foreach (var port in ports)
{
var replica = builder.AddProject<Projects.VehicleApi>($"vehicleapi-{serviceId++}")
.WithReference(cache)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно добавить .WaitFor(cache)

"Microsoft.AspNetCore": "Warning"
}
},
"ReplicaWeights": [ 0.5, 0.3, 0.2 ],
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Идея хорошая, но нигде не используется, если получится можно попробовать через переменные окружения передать в приложение, но там возникнут трудности, можно просто убрать отсюда

.WithHttpEndpoint(port: port, name: "api-endpoint", isProxied: false)
.WithExternalHttpEndpoints();

gateway.WaitFor(replica);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь не хватает .WithReference(replica), чтобы aspire прокинул адрес апи в api gateway

Если в aspire поменять порты, то все должно работать, api gateway проект должен достать из переменных окружения, которые пришли от aspire, адреса сервисов и поменять конфигурацию самого api gateway

* Изучение работы со средствами оркестрации на примере .NET Aspire,
* Повторение основ работы с системами контроля версий,
* Интеграционное тестирование.
## Лабораторная работа №1 — «Кэширование»
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно обновить readme

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

In progress Код в процессе проверки Lab 2 Лабораторная №2. Балансировка нагрузки

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants