云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

游戏服务器_阿里云服务器漏洞怎么修复_新注册优惠

小七 141 0

云服务服务器_企业级_物联网有哪些产品

博客几周前,我们在2019年春季开始的一个成功的beta发布周期之后,正式启动了Linux上的云原生Sisense部署截至2017年,Linux运行着90%的公共云工作负载。由于它的许多优点:更低的TCO、更高的安全性、更高的稳定性和可靠性、灵活性等等,它越来越成为企业和云计算的首选操作系统。考虑到这一重要性,我们将在2017年底投资在Linux上部署Sisense作为组织的优先事项当我们坐下来计划这个执行策略时,我们意识到有几种不同的方法可以实现它。对我们来说,关键的是不仅要做得正确,这样我们就不会浪费时间和资源,而且还要交付一种产品,引导我们的客户走向未来,并在不断增长的云环境中支持他们的需求。下面是我们如何使用正确的技术和框架重新构建Sisense,而不需要简单地移植代码。头几个月2017年底,当我被指派负责构建一个Sisense Linux部署时,我已经采取了一些小步骤。两位开发人员启动了一个Linux项目,最初只需将代码从一个操作系统移植到另一个操作系统它们从C/C++代码开始,通常需要从Windows到Linux的最长迁移。到2017年底,该团队能够展示他们的第一个演示,如何获得大数据,它使用C/C++对ActuCube管理器、我们的高性能数据库进行查询。盘点并重新启动项目尽管取得了一些进展,但在2018年1月,我们决定退一步,重新思考我们对该项目的态度。通常情况下,拿着你所拥有的和你所知道的而不去质疑你的方法就不那么可怕了。然而,这并不总是最聪明或最好的行动方案。在一头扎进仅仅把代码从一个操作系统移植到另一个操作系统之前,有必要考虑一下是否有必要按原样迁移所有组件,看看哪种语言或体系结构最适合手头的任务我们决定在需要它的地方和它有意义的地方,建站论坛,我们不会简单地移植代码,而是使用最相关的堆栈和技术从头开始重新构建组件,以实现组件的目的在这个决策过程中有三个"桶":将被迁移的组件。将使用正确的框架从头开始重建的组件,同时保持机构知识并提供类似的用户体验。例如,我们得出结论,几个组件必须用Java重写。为了实现这一点,我们花了一个多月的时间来培训整个工程团队。我们还招募了Java专家来帮助指导和管理设计。组件这将保持原样(例如,JavaScript),只需很少的更改,例如更新文件名和路径。事后看来,这是一个关键的决定,它为一个高性能、可靠和可扩展的现代企业级全栈分析应用程序铺平了道路。最棒的是我们能在一年多一点的时间里建成它工作的技术权利让我们把这个再分解一下。Sisense应用程序有几个由不同组件处理的关键任务:1Sisense ElastiCube或数据引擎Sisense ElastiCube可处理数亿条记录,需要进行高度优化。操作系统的开销越少越好。大多数代码都是C和C++,然后就这样离开了。CoucWay: C++和C++在构建与OS紧密结合的高度优化的过程中很有用,比如建立数据库引擎。2弹性体管理服务和查询服务弹性管理服务和查询服务从C语言和C++中移去,并在java中重建。Java是一种成熟的任务密集型应用程序,是一种高性能的可移植CPU。这些组件所需的灵活性和复杂性使得我们需要使用许多Java附带的框架,只关注我们的应用程序逻辑,而不影响性能我们已经(并将继续)在节点.js. 它会更容易使用节点.js到处都是。然而,我们抵制了使用节点.js在任何地方使用最好的语言和框架。节点.js非常适合于低内存占用的响应式操作。写起来容易些节点.js而且调试和开发速度也很快。然而,淘客文案,Java有更好的性能、更多的缓存和长状态功能。Java也更适合编译和类型检查,这一点很重要,尤其是在多年来合并发行版和分支时,如果不被编译错误捕获,这些操作可能会有很多漏洞。例如,管理服务需要知道所有的状态,并知道Kubernetes对系统有很多控制。使用Java构建它是有意义的,因为服务需要高效、高可用性和多线程。另一方面,与UI更紧密集成的应用程序部分更容易构建它节点.js. 例如,最初的pivot是作为一个IIS应用程序在C中实现的。pivot是一个完整的堆栈组件。把它改写成节点.js这使得全栈开发人员可以在相同的技术中同时在前端和后端工作。对于Web服务,不推荐使用C++,因为开发时间太贵。出于这些原因,那云,我们最终决定使用Java,特别是使用springboot框架。我们还考虑了一些选项,如Guice或EJB(我们立即取消了它们的资格)。要点:Java在构建任务关键的高性能应用程序时非常有用,这些应用程序需要更多的缓存、长状态功能和一组健壮的可用框架。节点.js另一方面,对于低内存占用的响应式操作以及当开发人员希望在相同的技术中同时处理前端和后端时(这是节点.js).三。数据连接器.NET connector framework被基于Java的新框架所取代,因为Linux上的.NET支持是通过.NET Core实现的,该内核于2016年推出,并不包含.NET framework for Windows的所有功能。连接器框架充当传输数据的管道。除此之外,访问大多数数据库提供程序的实际驱动程序都是用Java编写的,因此用Java编写框架也是很自然的。实际的数据压缩是在CyrCuTube内部完成的,它是用C/C++编码的。要点:Java是构建数据连接器的自然选择,因为它拥有庞大的生态系统,包括数据库驱动程序和丰富的框架。总之,有些语言最适合某些操作,而为手头的操作选择正确的语言是关键。为工作选择合适技术的指南集装箱化微服务Linux部署中的另一个关键变化与体系结构本身有关。虽然Windows部署中的许多组件都是基于微服务的,但考虑到重新构建Sisense的机会,我们决定使用Docker实现容器化,使用Kubernetes进行编排来构建一个容器化的微服务应用程序。我们最初在Docker Swarm和Kubernetes之间就编排问题进行了辩论,但由于越来越受欢迎,采购返利,而且Kubernetes正在成为容器编排的事实标准,所以我们决定选择Kubernetes。虽然我们的团队对DockerSwarm很满意,这被认为更像是DevOps的方式,但是Kubernetes更好地处理了其他开发人员的需求,比如版本控制、升级、发布和回滚。我们决定使用Kubernetes,将未来的开发人员用户放在心上。在构建微服务体系结构的过程中,一个有趣的争论就是将应用程序分解为多少个微服务。两年前,我们有一个相当完整的应用程序,有四到五个服务。现在不是这样了。我们今天有大约20种服务。根据经验,我们尽量不要创建太多的微服务,特别是那些延长呼叫链的服务。可以添加不在呼叫链上的服务。在一个给定的操作中,我们不应该将所有的微服务都包括在呼叫链中(例如,4-5个服务是可以的,但不是所有可用的服务)。重要的是要记住,虽然微服务是快速构建可伸缩和有弹性的应用程序的好方法,但它们也增加了复杂性,特别是它们之间的通信和最终的调试。您需要在创建的微服务数量、可支持性和可维护性之间找到一个平衡点使用共享存储、更新的监视和日志记录来处理事情的新方法重新构建平台也给了我们机会更新旧的做事方式,创造出更好、更高效的新方法。例如,Windows创建高可用数据的方法是在多个服务器上存储数据的副本。通过这种重新架构,我们能够摆脱这种情况并重建这种体验,从而能够使用高度分布式和可用的共享存储技术,如云存储提供商、GlusterFS、Amazon EFS、Azure文件共享、Google文件存储等等。另一个例子是日志记录。构建基于微服务的体系结构的一个挑战是调试,因为涉及的组件数量很多,而且日志可以存储在所有不同的位置。为了缓解这种情况,我们采取的第一步是使用FluentD构建一个组合日志,FluentD在一个集中的位置收集所有数据。此外,我们添加了Grafana和Prometheus,它们通过提供系统度量的详细视图来提供系统中正在发生的事情的计数器一路走来的收获当我们在另一个席德身上出现的时候