云原生应用讲解系列二
继续上一篇云原生应用讲解系列一 微服务 云原生系统包含微服务,这是一种用于构建现代应用程序的流行架构风格。 微服务构建为一组分布式的小型独立服务,通过共享结构进行交互,具有以下特点: 每个都在更大的域上下文中实现特定的业务功能。 每个都是自主开发的,可以独立部署。 每个都是独立的,封装了自己的数据存储技术(SQL、NoSQL)和编程平台。 每个进程在自己的进程中运行,并使用标准通信协议(如HTTP
继续上一篇云原生应用讲解系列一 微服务 云原生系统包含微服务,这是一种用于构建现代应用程序的流行架构风格。 微服务构建为一组分布式的小型独立服务,通过共享结构进行交互,具有以下特点: 每个都在更大的域上下文中实现特定的业务功能。 每个都是自主开发的,可以独立部署。 每个都是独立的,封装了自己的数据存储技术(SQL、NoSQL)和编程平台。 每个进程在自己的进程中运行,并使用标准通信协议(如HTTP
某一天,在办公室,你在做“下一件大事” 你的手机响了。是你友好的招聘者——一天给你打两次电话谈新工作的人。 但这次不同了:创业、股权和充足的资金。 一提到云和尖端技术,你就会被推到边缘。 快进几周,你现在是一个新员工在设计一个主要的电子商务应用程序的设计会议。你将与领先的电子商务网站竞争。 你将如何建造它? 如果您遵循过去15年的指导,您很可能会构建如图1.1所示的系统。 传统单体设计 构建一个包
继续上一篇:Serverless无服务器架构系列一 Serverless缺点 无服务器架构当然有很多值得喜欢的地方,但它们有着重要的权衡。其中一些权衡是这些概念所固有的;它们不能完全由进展来解决,而且它们总是需要考虑的。其他的则与当前的实现有关;随着时间的推移,我们可以期望看到这些问题得到解决。 固有缺点: 供应商控制 对于任何外包策略,您都是在将部分系统的控制权交给第三方供应商。这种缺乏控制可能
Serverless体系结构是一种应用程序设计,它包含第三方“后端即服务”(BaaS)服务,和/或包含在“功能即服务”(FaaS)平台上的托管临时容器中运行的自定义代码。通过使用这些思想,以及类似于单页应用程序的相关思想,这样的体系结构消除了对传统的总是在服务器上的组件的大量需求。无服务器体系结构可以从显著降低的操作成本、复杂性和工程提前期中获益,但代价是增加对供应商依赖性和相对不成熟的支持服务的
在本文中,我们将学习区块链技术的基本概念。我们还将用Java实现一个基本的应用程序,重点介绍这些概念。 此外,我们还将讨论该技术的一些先进概念和实际应用。 什么是区块链? 那么,让我们先来了解一下区块链到底是什么… 好吧,它的起源可以追溯到Satoshi Nakamoto在2008年发表的关于比特币的白皮书。 区块链是一个分散的信息分类帐。它由通过使用密码学连接的数据块组成。它属于通过公共网络连接
Spring5是第一个主要版本,距离SpringFramework4.0快四年了。在此期间,大多数增强都是在springboot项目中完成的。在本文中,我们将快速介绍Spring5.0发行版中的一些令人兴奋的特性。 Baseline升级 要构建和运行Spring5应用程序,您至少需要JDK8和JavaEE7。以前的JDK和javaee版本不再受支持。具体来说,Java EE 7包括- Servle
本文将介绍如何创建“Hello,Spring!”的一个响应式应用,使用Spring WebFlux的restfulweb服务(从版本5开始新增),然后使用WebClient使用该服务(从版本5开始新增)。 关于Spring WebFlux的功能方法可以参考这篇文章:https://javakk.com/1783.html。 您将使用Spring WebFlux和该服务的WebClient使用者构建
Spring WebFlux Spring框架中包含的原始web框架springweb mvc是专门为Servlet API和Servlet容器构建的。反应式堆栈web框架SpringWebFlux是在5.0版本中添加的。它是完全无阻塞的,支持反应流背压,并在Netty、Undertow和servlet3.1+容器等服务器上运行。 两个web框架都反映了它们的源模块(和springwebflux)
我一直在玩GraalVM AOT编译功能,因为我知道它。作为一个长期的Spring爱好者,我仔细地观察了Tanzu的工程师们为使Spring-AOT兼容所做的努力。最近,他们宣布了测试版的集成。在这篇文章中,我想看看制作一个(正在工作的!)来自现有Spring引导应用程序的Docker image镜像。 GraalVM提供了许多不同的特性。其中,名为substratevm的组件允许AOT将常规字节
在本教程中,我们将研究标准Spring框架和Spring Boot之间的区别。 我们将重点讨论Spring的模块,如MVC和Security,在核心Spring中使用时与在Boot中使用时的区别。 Spring是什么? 简单地说,Spring框架为开发Java应用程序提供了全面的基础设施支持。 它包含了一些很好的功能,比如依赖注入,以及一些现成的模块,比如: Spring JDBC Spring
定义web应用程序 在Tomcat中定义web应用程序有两种方法:编辑配置文件或使用交互式管理工具。 手动编辑配置文件 修改<Tomcat home>/conf/server.xml:通过插入 <Context path="/jchem" docBase="<JChem home>" reloadable="true" > </Context> &l
GraalVM是一个高性能运行时,它在应用程序性能和效率方面提供了显著的改进,这是微服务的理想选择。它是为java、JavaScript、LLVM等语言编写的,如C++和C++语言,以及其他动态语言。它消除了编程语言之间的隔离,并在共享运行时启用互操作性。它可以独立运行,也可以在OpenJDK的上下文中运行,Node.js或者Oracle数据库。 对于Java程序 对于现有的Java应用程序,Gr
Dolt是一个SQL数据库,您可以像git存储库一样进行分叉、克隆、分支、合并、推送和拉取。连接到Dolt就像任何MySQL数据库一样,使用SQL命令运行查询或更新数据。使用命令行界面导入CSV文件、提交更改、将更改推送到远程服务器或合并队友的更改。 你所知道的Git的所有命令对Dolt的作用完全相同。Git版本文件,Dolt版本表。就像Git和MySQL生了个孩子一样! 我们还建立了DoltHu
什么是RocksDB? RocksDB是一个用于快速存储的可嵌入持久键值存储。ROCKSDB也可以是客户机-服务器数据库的基础,但我们目前的重点是嵌入式工作负载。 RocksDB构建在LevelDB之上,可以在具有许多CPU核心的服务器上运行,可以高效地使用快速存储,支持IO绑定、内存中和一次写入的工作负载,并且可以灵活地进行创新。 性能如何比较? 我们对LevelDB进行了基准测试,发现它不适合
Micronaut:现代的JVM微服务框架 一个现代的、基于JVM的、全栈框架,用于构建模块化的、易于测试的微服务应用程序micronaut.io Micronaut是Grails团队在2018年Greach大会上正式宣布的一个全新的全栈框架。它专注于模块化、最小的内存占用和启动时间,这使得它成为运行在AWS lambda或类似环境中的完美解决方案。用Java编写的服务器需要不到1秒的时间来启动8
Netflix开源了领域图形服务 Domain Graph Service (DGS)框架,DGS简化了框架的独立性和联合GraphQL服务的实现。 通过开源项目,希望对Java和GraphQL社区做出贡献,并向所有使用该框架的人学习和合作,使其变得更好。 DGS框架的主要功能包括: 基于注解的Spring-Boot编程模型 将查询测试编写为单元测试的测试框架 Gradle代码生成插件,可以从Gr
介绍 Apache Ignite是一个开源的以内存为中心的分布式平台。我们可以将其用作数据库、缓存系统或内存中的数据处理。 该平台使用内存作为存储层,因此具有令人印象深刻的性能。简单地说,这是目前生产中使用的最快的原子数据处理平台之一。 官网地址:https://ignite.apache.org/ 安装 我们将要构建的应用程序的Maven依赖关系: <dependency> <
介绍 在本文中,我们将看一看Caffeine—一个针对Java的高性能缓存库。 缓存和映射之间的一个基本区别是缓存淘汰/过期策略。 逐出策略(缓存淘汰策略)决定应在任何给定时间删除哪些对象。此策略直接影响缓存的命中率—缓存库的一个关键特性。 Caffeine使用Window TinyLfu逐出策略,它提供了一个接近最佳的命中率。 maven依赖 我们需要把Caffeine的依赖添加到我们项目的中p
Hashed wheel timers介绍 哈希轮计时器是一种非常有趣的数据结构,在网络服务器中得到了广泛的应用。它们的低内存开销和合理的效率保证非常适合处理数百万个连接的服务器,每个连接都有一个计时器。我们不会花太多时间描述它们是如何工作的,相反,我们将研究一些实现,并尝试评估它们的相对权衡。 让我们快速回顾一下哈希轮计时器的基本数据结构: 基本的数据结构看起来像一个hashmap,带有单独的链
ActiveMQ与RabbitMQ的区别 ActiveMQ与RabbitMQ是流行的开源消息代理。消息代理通过将定义的消息共享给各种应用程序来帮助计算机彼此交互,从而支持电信系统。消息代理帮助将发送方消息的格式转换为接收方标准的格式。RabbitMQ是AMQP协议的最佳实现。它执行一个代理体系结构,其中消息在发送到目的地之前在中心节点上排队。ActiveMQ工作在中间地带,使用代理和P2P架构进行