每当我尝试在 TypeScript 环境中向全局 Nodejs 全局 namspace 添加函数时,都会收到此错误。
元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名
声明全局命名空间
declare global {
namespace NodeJS {
interface Global {
signin(): string[]
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以如果我尝试这个
global.signin = () => {}
Run Code Online (Sandbox Code Playgroud)
它返回一个
元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名
微服务架构表明每个服务都应该处理它自己的数据.因此,依赖于其他服务(服务B)所拥有的数据的任何服务(服务A)应该不是通过直接DB调用而是通过第二服务(服务B)提供的api来访问这些数据.
那么微服务最佳实践对检查外键约束的建议是什么.
示例:我正在为产品开发交付功能(微服务1),某些产品只能交付给产品表中提到的某些位置,只能访问产品微服务(mircoservice 2).
如何确保微服务1(即交付功能)不接受订单到未服务的位置.我有这个问题,因为交付功能无法直接访问产品数据库,因此当交货订单放入交货数据库时,没有适用于数据库级别的限制(不检查是否可以查看产品数据库中是否存在外键匹配)或表).
我正在研究如何将巨大的单页整体分解为微前端架构.
要有效地开发大型应用程序,您需要让很多人参与其中.但是,每个应用程序/团队的开发人员数量不能很好地扩展.然而,独立团队并行开发多个独立应用程序可以任意缩放
考虑到这一点,团队必须选择自己的工具堆栈,特别是执行第三方库的独立版本升级(如角度,反应,jquery).如果不是这种情况,框架更新需要与每个组件兼容,然后才能将其部署到生产环境中.
虽然需要进行独立的版本升级,但将团队限制在一些支持的框架(Angular,React,Vue,Polymer ......)是合理的,现在我尝试构建一个纯粹由Angular-Apps组成的演示.
然而,即使Angular 5被认为是支持大型多模块应用程序的平台框架,但在同一浏览器窗口中运行几个独立的角度应用程序几乎是不可能的.
我设法通过利用HTML-Imports在单个webapp上引导几个Angular-Apps(不同的版本,每个版本都在自己的服务器上托管).但是,有几个global依赖项需要在应用程序之间共享
网上有几篇关于如何引导多个角度模块的文章,但它们都引用同一个核心应用程序中的多个模块,这反过来意味着它们都在相同的框架版本上运行,并且更新意味着你必须重建和部署整个巨石.
除了" iframes" 之外是否有任何解决方案可以在同一个页面上运行多个Angular(5)应用程序?
如果您在组织中使用微服务架构,他们可以通过zookeeper或其等价物共享配置.但是,各种服务应该如何共享公共数据库模式?常见的常数?和普通公用事业?
一种方法是将所有微服务放在同一个代码库中,但这与微服务带来的解耦相矛盾......
另一种方法是让每个微服务完全独立,但这会导致每个微服务必须保持的单独数据库中的代码重复和数据重复.
另一种方法是实现没有context\state的功能微服务,但这通常是不现实的,并且会推动架构有一个中心集线器来维护上下文\状态和来自\的大量流量.
在微服务之间共享代码和模式的可扩展,高效实用且有希望的美妙方式是什么?
我正在尝试设计一个绿色领域项目,该项目将包含多个服务(服务数据)和Web应用程序(提供HTML).我读过微服务,看起来很合适.
我还有的问题是如何实现SSO.我希望用户进行一次身份验证,并可以访问所有不同的服务和应用程序.
我可以想到几种方法:
添加身份服务和应用程序.任何具有受保护资源的服务都将与Identity服务通信,以确保其拥有的凭据有效.如果不是,它将重定向用户进行身份验证.
使用诸如OpenID之类的Web标准,并让每个服务处理它自己的身份.这意味着用户必须单独授权每个服务/应用程序,但之后它将是SSO.
我很乐意听到其他想法.如果特定PaaS(例如Heroku)具有也可接受的专有解决方案.
我正在创建一个具有微服务架构的项目.我创建了两个微服务.
其中一个是产品实体,另一个是票据实体.它们有自己的端点,它们通过网关连接在一起(我使用的是jhipster微服务架构).
bill-ms应该访问产品列表.我想知道如何在这两个ms之间进行通信.我脑子里有三种方法:
从bill-ms发送请求到队列 - 就像rabbitMQ一样,从product-ms获取带有这些id的这些产品(我不知道这是什么瓶颈)
向网关发送请求以获取产品服务并从那里获取产品(由于它们之间的数据大小而我担心延迟,因此我不直接接触数据库所以我总是依赖于网关)
我可以在bill-ms中复制存储库,服务和实体(这是一种丑陋的方式,我认为它打破了ms架构的规则并且维护非常困难)
如果您有任何其他方法,我感谢您与我分享.
编辑
如今在微服务世界中,我在我的工作场所看到很多使用 kafka 消息传递的设计,当您可以使用微服务之间的 rest api 调用获得类似的结果时。从技术上讲,您可以完全停止使用 rest api 调用,而是使用 kafka 消息传递。我真的很想知道最佳实践,优缺点,微服务之间何时使用 api 调用,何时使用 kafka 消息传递。
让我们举一个现实生活中的例子:
我有库存服务和供应商服务。日常供应商服务调用供应商 API 来获取新项目,这些需要转移到库存服务中。项目数最多可达 10,000 个对象。
对于这个用例,最好是:
从供应商 API 获取新数据后,调用库存服务的 REST API 来存储新项目。
从供应商 API 获取新数据后,将它们作为消息发送到 kafka 主题,供库存服务使用
您会选择哪种方式以及考虑什么
rest apache-kafka microservices kafka-consumer-api spring-kafka
我正在重构一些node.js服务.所有这些都曾经forever在虚拟服务器上开始,如果进程崩溃,他们只是重新启动.
现在,转向容器化和无状态应用程序结构,我认为该进程应该退出,容器应该在失败时重新启动.
那是对的吗?有利有弊吗?
我试图了解在哪种情况下我应该通过负载均衡器选择服务注册表.
根据我的理解,两种解决方案都涵盖相同的功能.
例如,如果我们将consul.io视为功能列表,我们有:
例如Amazon ELB等负载均衡器有:
因此,在这种情况下,我无法理解为什么我会选择类似consul.io或netflix eureka以上Amazon ELB的服务发现.
我有一种预感,这可能是由于实现客户端服务发现与服务器端服务发现,但我不太确定.
cloud web-services distributed-computing amazon-web-services microservices
目前,我有一个项目的20个微服务.并且每个微服务都存储在单独的GIT reposotiry中.随后,服务数量将增加到200(或更多).
每项服务都有单元测试和集成测试.每个服务都在TeamCity(持续集成服务器)中构建.
问题:如何为一个项目存储200个微服务的源代码?在一个存储库中还是在单独的存储库中?
microservices ×10
cloud ×2
node.js ×2
angular ×1
apache-kafka ×1
architecture ×1
coreos ×1
database ×1
docker ×1
git ×1
html ×1
java ×1
javascript ×1
jhipster ×1
paas ×1
rest ×1
security ×1
spring ×1
spring-boot ×1
spring-kafka ×1
typescript ×1
web-services ×1