问题标签 [cross-cutting-concerns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
32 浏览

sql-server - MSSQL - 样板代码重复和交叉问题

我最近负责一个新的 MSSQL 数据库。

我可以看到几乎每个存储过程都有重复的样板代码,用于设置用户上下文/行权限和日志执行。

是否有任何工具可用于简化和消除重复?

如果我正在编写 C# 代码,它的工作原理类似于进入/退出方面。

如果这有助于提供解决方案,我可以使用完整的 redgate 工具带和 MS Visual Studio。

亲切的问候,

史蒂夫

0 投票
1 回答
73 浏览

c# - 在横切层内创建记录器配置

目前在 .NET CORE 中做一个项目,我将在其中拥有多个层,包括一个 CrossCuting 层,但我无法解决这个问题......现在我有一个使用 Serilog 的 Logger 工作正常。但我现在的问题是,我想在 CrossCutting 层内创建和配置我的记录器,然后注入应用程序层(现在)。有没有办法做到这一点?这么多文章解释了如何进行配置槽Program.cs,但是在层内部呢?

0 投票
0 回答
22 浏览

java - 是否使用编程配置覆盖了 log4j2.xml 文件中的配置?

我想以编程方式为我的公共库中的默认值覆盖一些配置,这些配置应该由其他加载它的 Spring Boot 应用程序自动加载。我应该如何处理它。我试过的是

但它不会自动加载配置任何帮助将不胜感激。

0 投票
1 回答
56 浏览

database - 如何管理跨不同微服务所需的数据?

我目前正在为我的公司(物流公司)设计一种微服务方法。现在我们有一个单一的关系数据库的单体系统。

我了解拥有单独数据库的微服务方法。不幸的是,我不明白如何管理不同服务所需的数据。即,在开发票、预订、寻路等方面需要有关地理层次结构的数据。它描述了世界上任何地方的层次结构(即,有一个城镇位于一个位于某个州的县中,该州位于位于某个大陆的国家中)。在我看来,这些数据不属于任何提到的服务,但任何这些服务都需要这些数据。

我该如何处理这种数据?

我可以想象的一个解决方案是为这些数据创建一个自己的微服务,但这不符合领域驱动设计理念,即按功能而不是按服务拆分服务。

谁能帮我?

0 投票
0 回答
13 浏览

django - Django 项目需要运行 3 个主要工作问题(调度进程、ansible 作业和 API 服务器)。但是 Nginx 一直在杀死我的工人

我使用具有 2 个主要工作负载的 Django 后端:

  1. Angular UI 前端和 Django 管理屏幕的 API 服务器
  2. 调度程序,启动大约 8 种不同的预定服务
    • 指标收集:针对一组服务器的 API 调用以进行定期状态更新,然后将响应存储在 PostgreSQL 数据库中。
    • Runner:针对我们的服务器群运行 Ansible 作业

一切都与同一个 PostgreSQL 数据库相关联,并且经常交叉引用。所以不要认为这些是合乎逻辑的不同应用程序,它不是。

问题都源于 Gunicorn 网络服务器和超时。Gunicorn 有 6 名工人。默认情况下,Gunicorn 喜欢杀死在过去约 30 秒内未使用的进程。如果您的工作负载只是 HTTP 调用而不是后台进程,那么这非常有用。但是,由于我显然两者都有,所以我在杀死 ​​gunicorn 或不杀死我的进程时遇到了问题。

多年来,我的 gunicorn 超时时间非常高,为 21600 秒(6 小时)。使用此设置,它将让我的 Ansible 作业完成并且我的调度程序作业完成。但是数据库会有大量的非活动(2000~4000)和活动(1~20)会话。数据库会很慢,连接会很慢地消失。

最近我将它降低了 60 秒,我的所有调度程序和 Ansible 作业都会失败。然后我去了800秒。大多数调度程序作业都会完成,但如果我的 HTTP 调用进入缓慢,Ansible 作业将在 800 秒左右时终止。

现在我清楚地看到我有两个工作量问题。1) API 调用和 2) 后端处理

目前的 Gunicorn 服务

那么该怎么办???

我的首要想法是创建三个调用相同代码库的服务。但是传入一个名为 service_function='Scheduler|API|Runner' 的变量

  1. API:基本上使用我上面的内容,但传入 service_function='API' 并将我的超时时间降低到 60 秒
  2. 调度程序:我被撕裂
    了 A) 创建直接调用 Django 并传递 service_function='Scheduler' 的服务。但是我听说以这种方式运行 Django 是不明智的,因为它不安全。但我不会接受 HTTP 请求。仅供参考:调度程序启动并处理它自己的线程。
    B) 只需设置一个没有工人或线程且超时 = 0 的新 Gunicorn 服务器
  3. Runner:像#2一样创建服务并传递 service_function='Runner'

我可以将 #2 和 #3 结合起来,但认为使用 3 个不同的服务搜索 journalctl 可能会更容易。但是我的日志文件已经分开了,所以它不是一个显示停止器。

在 wsgi.py 文件中,我计划读取该输入参数并将其用作全局变量。然后,这个变量会告诉 Django 什么时候它应该充当 API、调度程序或 Runner 服务器。

目前,我的调度程序使用先到先服务器锁定机制,直到该进程终止。这是当前设计的一种失败,因为所有必须通过所有逻辑来查看调度启动过程是否只是为了找到锁定文件并且锁定文件中的进程是否处于活动状态。该解决方案将通过一个简单的 If 语句解决该问题。

请我是一个 1 人的团队。在走这条路之前,我需要其他观点。我用谷歌搜索了一堆,但从未真正找到这样的问题。

堆:

提前致谢。