0%

Nacos 简介

Nacos 可以帮助我们发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助我们快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 的关键特性包括:

  • 服务发现和服务健康监测

    Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDKOpenAPI 或一个独立的 Agent 注册 Service 后,服务消费者可以使用 DNS 或 HTTP&API 查找和发现服务。

    Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP) 和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测 2 种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

    基于 DNS 的服务发现和查找在 V2.0.0 中使用 CoreDNS,但是暂未成熟、稳定;

    独立的 Agent 是以 Sidecar 边车模式通过 spring-cloud-starter-alibaba-sidecar 来提供的。

阅读全文 »

匹配单个字符

匹配任意字符:.

. 元字符可以匹配任何单个的字符、字母、数字甚至是 . 字符本身

匹配特殊字符:\

\ 反斜杠是一个元字符( metacharacter,表示“这个字符有特殊含义,而不是字符本身含义"),反斜杠元字符可以对其它有特殊含义的元字符进行转义,来匹配该字符。

阅读全文 »

cover

引言

无论您是要集成多个微服务、希望提高应用程序可靠性还是构建新的流应用,您都可能需要消息队列 (MQ) 或消息代理平台。这些类型的软件将消息从生产应用程序或服务传递到消费应用程序或服务。

两个最流行的消息处理平台是 Apache KafkaRabbitMQ 。在高层次上,它们具有相似的功能,尽管它们之间存在重要差异。了解这些差异可以帮助您为特定用例选择一种或另一种。

在本博客中,我们将探讨 Kafka 和 RabbitMQ 的工作原理、它们的一些差异以及各自的最佳用例。

阅读全文 »

当在 JDK5 中为 Java 添加泛型时,Neal Gafter 将类 java.lang.Class 更改为泛型类型。例如,String.class 的类型现在变为 Class<String>Gilad Bracha 为此创造了术语 type token - 类型令牌。作者的意图是启用特定样式的 API,Joshua Bloch 称之为 THC,或 Typesafe Heterogenous Container - 类型安全的异构容器模式,在 Effective Java 第 33 项中详细描述了该模式。

阅读全文 »

Unsafe.park/unparkObject.wait/notify 都可以用来实现线程的阻塞和唤醒,但两者有些本质的区别。

LockSupport

Unsafe.park 通常被用在 LockSupportpark 方法中,LockSupport 用于创建锁和其他同步类的基本线程阻塞原语

AbstractQueuedSynchronizer(AQS) 框架中的方法大量使用该类来构建,该抽象类用于实现依赖先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件等),位于 java.util.concurrent 包下的大部分状态依赖类都构建于它之上,例如 ReentrantLockSemaphore 等。

阅读全文 »

文章节选部分并翻译自:Getting Started With the Java Rule Engine API (JSR 94): Toward Rule-Based Applications

Java 规则引擎 API (JSR 94) 规范是通过 Java Community Process (JCP) 项目开发的,它通过提供一个简单的 API 来访问来自 Java 平台标准版的规则引擎,从而为规则引擎定义了 Java 运行时 API( Java SE)或 Java Platform Enterprise Edition(Java EE)Java 技术客户端。本文概述了 JSR 94,并讨论了如何将业务规则技术融入 Java 技术应用程序中。示例代码展示了开发基于规则的应用程序所涉及的工作。

引言

许多业务应用程序必须应对市场经济的动态变化。例如,用于保险和银行业的应用程序必须能够适应在设计过程中没有人能够预测或计划的不可避免的市场变化。一个解决方案是拥有一个规则引擎,它根本上是一组工具,使业务分析师和开发人员能够根据组织的数据构建决策逻辑。规则引擎应用最终用户定义的规则和操作,而不会影响应用程序的运行方式。该应用程序是为处理单独设计的规则而构建的。

规则引擎的示例包括 Drools、Fair Isaac Blaze Advisor、ILOG JRules 和 Jess,仅举几例。然而,缺乏标准可能是阻止企业使用基于规则的应用程序的主要因素。大多数规则引擎都有专有的 API,这使得它们很难与应用程序集成。如果不再支持某个规则引擎,而业务决定采用其他规则引擎,则需要重写大部分应用程序代码。JSR 94 尝试标准化 Java 技术的规则引擎实现。前面提到的四个规则引擎都支持 JSR 94。

JSR 94 为规则管理和规则运行时 API 提供了指南,但它没有定义用于定义规则和操作的语言的指南。正在努力标准化通用规则语言,包括 规则标记语言 (RuleML)

阅读全文 »

本文档为 AOP Alliance 白皮书的部分翻译

引言

本文档的目的是介绍 AOP 联盟项目。它的目标,它的哲学,它应该提供什么答案,它不应该提供什么。这是一个提案草案,必须与 AOP 联盟的其他成员进一步讨论,以便就我们在这里所做的工作达成共识。一旦从列表中的讨论中出现有趣的点,它也应该去完成。

本文档是一份白皮书,可供 AOP 联盟成员用于内部目的,也可以为外部人员提供有关 AOP 联盟的见解和理解。

在第1节中,我将尝试概括地解释 AOP 联盟的目标。我们的动机来自这样一个事实,即 AOP 可以改进诸如基于 J2EE 的解决方案。如果我们设法定义一组规范化的 API,就可以将 AOP 集成到现有解决方案中或使用现有 AOP 工具构建 AOP 环境。

2节概述了面向切面环境的拟议架构和 API。我们试着猜测 AOP 联盟应该指定哪些 API。

最后,在第3节中,我将详细介绍已识别的组件及其在 AOP 环境中的角色。

阅读全文 »

整体流程

创建过程:

  • Spring 刷新上下文 -> 实例化 Bean -> 调用初始化 Hook

    • 使用 JpaRepositoryFactoryBean 构建仓库工厂 Bean

      默认非 Lazy 启动模式下创建仓库实例 -> 创建代理工厂代理该实例 -> 代理工厂使用切面添加多个 Advice:比如方法调用校验器、接口默认方法拦截器、自定义方法实现拦截器、自定义接口实现拦截器

core-sequence-diagram

阅读全文 »

OAuth 是什么

OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源。应用向资源拥有者请求授权,然后取得令牌(token),并用它来访问资源。

虽然 OAuth 基本上不关心它所保护的资源类型,但它确实很适合当今的 RESTful Web 服务,也适用于 Web 应用和原生应用。

OAtuth 协议规范是这样定义的:

OAuth 2.0 框架能让第三方应用以有限的权限访问 HTTP 服务,可以通过构建资源拥有者与 HTTP 服务间的许可交互机制,让第三方应用代表资源拥有者访问服务,或者授予权限给第三方应用,让其代表自己访问服务。

其中需要关心的组件角色如下:

  • 资源拥有者有权访问受保护资源,并能将受保护资源的访问权限委托出去。与 OAuth 系统中的其他组件不同,资源拥有者不是软件。在大多数情况下,资源拥有者是一个人,他使用客户端软件访问受他控制的资源。至少在部分过程中,资源拥有者要使用 Web 浏览器(通常称为用户代理)与授权服务器 交互。资源拥有者可能还会使用浏览器与客户端交互。
  • 受保护资源是资源拥有者有权访问的组件,在访问时需要 OAuth 访问令牌。这样的组件有多种形式,但大多数情况下是某种形式的 Web API。受保护资源需要验证收到的令牌,并决定是否响应以及如何响应请求。在 OAuth 架构中,受保护资源对是否认可令牌拥有最终决定权。
  • 客户端是代表资源拥有者访问受保护资源的软件。在 OAuth 中,只要软件使用了受保护资源上的 API,他就是客户端。它使用 OAuth 来获取访问权限。得益于 OAuth 的设计,客户端通常是 OAuth 系统中最简单的组件,它的职责主要是从授权服务器获取令牌以及在受保护资源上使用令牌。客户端不需要理解令牌,也不需要查看令牌的内容。相 反,客户端只需要将令牌视为一个不透明的字符串即可。OAuth 客户端可以是 Web 应用、原生应用,甚至浏览器内的 JavaScript 应用。
  • 授权服务器是一个 HTTP 服务器,它在 OAuth 系统中充当中央组件。提供了一种机制来弥补客户端与受保护资源之间的间隙。授权服务器对资源拥有者和客户端进行身份认证,让资源拥有者向客户端授权、为客户端颁发令牌。某些授权服务器还会提供额外的功能,例如令牌内省、记忆授权决策。

整个系统的目标是:让客户端代表资源拥有者访问受保护资源。

阅读全文 »

适用于 Windows 10 的子系统 Linux 安装指南

启用 Windows 子系统 Linux

在 Windows 上安装任何 Linux 发行版之前,您必须首先启用“Windows Subsystem for Linux/适用于Linux的Windows子系统”可选功能。

wsl-enable

或者以管理员身份打开 PowerShell 并运行:

PowerShell复制

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

启用虚拟机功能

安装 WSL 2 之前,必须启用“Virtual Machine Platform/虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。

以管理员身份打开 PowerShell 并运行:

PowerShell复制

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

阅读全文 »