用户您好!请先登录!

博客

RPA (Robotic Process Automation) Open Source Investigation

1. What’s RPA?

A complete solution to automate processes end-to-end – with exception management, complex decision-making by humans, and delegation of repetitive task sequences to a digital workforce of software robots. [Bonita and UiPath]

一个完整的解决方案,实现了端到端的流程自动化—异常管理,由人类进行复杂的决策,并将重复性的任务工作授权给由软件机器人组成的数字化劳动力。

  • Non-disruptive

    1. to get the job done without changing existing systems.
    2. do not use API’s or heavy IT requirements that would affect the security, quality, or data integrity applications.
    3. use robots access applications exactly as a human does – via the user interface with an established access control mechanism (e.g., Logon ID and password) – requiring no underlying systems programming.
  • Business user friendly

    1. ease-of-use and low requirement for technical support means adoption can originate inside business operations.

阅读更多

普罗米修斯的架构与挑战

普罗米修斯(Prometheus)是现在重要的云原生监控平台之一,它允许企业从任何基础设施或应用组件收集和处理指标数据,用于监控容器化工作负载。它与Kubernetes和云原生生态系统中的其他组件集成,通过监控数据可以帮助企业收集和处理四种类型的指标:计数器(counter),量规(gauge),直方图(histogram)和摘要(summary)。Prometheus数据模型反映了Kubernetes基础架构元数据,使其成为Kubernetes监控的自然选择。

什么是普罗米修斯?

普罗米修斯是为大型环境设计的开源监控和警报解决方案,通常用于包含容器和容器化工作负载的环境中。它以较低的系统资源要求实现了丰富的自定义和灵活的查询。如果需要,它还可以通过一台服务器同时从数千台计算机中获取大量数据。

阅读更多

六边形架构

六边形架构的思想是将输入和输出都放在设计的边缘部分。不管我们公开的是 REST 还是 GraphQL API,也不管我们从何处获取数据——是通过数据库、通过 gRPC 还是 REST 公开的微服务 API,或者仅仅是一个简单的 CSV 文件——都不应该影响业务逻辑。

这种模式让我们能将应用程序的核心逻辑与外部的关注点隔离开来。核心逻辑隔离后,意味着我们可以轻松更改数据源的细节,而不会造成重大影响或需要在代码库重写大量代码

另外,在应用中具有清晰边界的另一大优势就是测试策略——我们的大多数测试在验证业务逻辑时,都不需要依赖那些很容易变化的协议。

阅读更多

提高Logback日志性能的配置写法

1、配置文件logback-spring.xml

Spring Boot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了。

logback框架会默认加载classpath下命名为logback-spring或logback的配置文件。

将所有日志都存储在一个文件中文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将error日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。

阅读更多

软件架构的历史

第一阶段:20世纪50年代后期“块状图”出现

1928年,一种通过有限的指令序列来解决这个问题的算法被提出。 冯·诺依曼于1947年开发了“流程图”(Flow Chart),该流程图是对指令流的可视化表示,目的是通过继承流程图(Flow Process)和多流程图的思想,来规划计算机程序。 但是,这里有一个缺口来指出控制的流程。 因此,“控制流程图”(Control Flow Diagram, CFD)是在20世纪50年代后期发展起来的,用来描述业务流程和程序的控制流。 这不足以查看复杂的系统。 因此,为了通过划分块来揭示整个系统,50年代后期开发了“块状图”。 每个模块的功能以及模块之间的连接将在图中显示。在这个时候,你会发现很多架构师常用的块状图就已经出现了。

阅读更多

kafka的几个原理介绍

了解 Kafka 的内部工作原理有助于理解 Kafka 的行为,也利用快速诊断问题。下面我们来探讨一下这三个问题

  • Kafka 是如何进行复制的
  • Kafka 是如何处理来自生产者和消费者的请求的
  • Kafka 的存储细节是怎样的

集群成员间的关系

我们知道,Kafka 是运行在 ZooKeeper 之上的,因为 ZooKeeper 是以集群形式出现的,所以 Kafka 也可以以集群形式出现。这也就涉及到多个生产者和多个消费者如何协调的问题,这个维护集群间的关系也是由 ZooKeeper 来完成的。如果你看过我之前的文章(真的,关于 Kafka 入门看这一篇就够了),你应该会知道,Kafka 集群间会有多个 主机(broker),每个 broker 都会有一个 broker.id,每个 broker.id 都有一个唯一的标识符用来区分,这个标识符可以在配置文件里手动指定,也可以自动生成。

阅读更多

API网关与ESB总线的区别

随着互联网的快速发展,企业的IT建设也是飞速发展的,但是在建设企业信息化时没有统筹考虑,建设往往不成体系、重复开发、烟囱式的建设,造成了资源的冗余和浪费,为了针对这些问题逐渐诞生了SOA、ESB、微服务、API网关以及REST等技术,现针对技术点总结如下。

1. API网关剖析

API 网关是一个服务器,也可以说是进入系统的唯一节点。这与面向对象设计模式中的 Facade 模式很像。API 网关封装内部系统的架构,并且提供 API 给各个客户端。它具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能。

阅读更多

用ShardingSphere数据脱敏

安全控制一直是治理的重要环节,数据脱敏属于安全控制的范畴。对互联网公司、传统行业来说,数据安全一直是极为重视和敏感的话题。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。涉及客户安全数据或者一些商业性敏感数据,如身份证号、手机号、卡号、客户号等个人信息按照相关部门规定,都需要进行数据脱敏。

在真实业务场景中,相关业务开发团队则往往需要针对公司安全部门需求,自行实行并维护一套加解密系统,而当脱敏场景发生改变时,自行维护的脱敏系统往往又面临着重构或修改风险。此外,对于已经上线的业务,如何在不修改业务逻辑、业务SQL的情况下,透明化、安全低风险地实现无缝进行脱敏改造呢?

阅读更多

Java并发编程框架Disruptor那点事

Disruptor是一个高性能的异步处理框架,一个轻量级的JMS,和JDK中的BlockingQueue有相似处,但是它的处理速度非常快,获得2011年程序框架创新大奖,号称“一个线程一秒钟可以处理600W个订单”(这有点吓人吧),并且Disruptor不仅仅只有buffer,它提供的功能非常强大,比如它可以帮助我们轻松构建数据流处理(比如一个数据先交给A和B这2个消费者并行处理后再交给C处理,是不是有点想起storm这种流处理,实际上strom的底层就是应用了disruptor来实现worker内部threads的通信)。

本文将使用disruptor最新版3.3.6进行介绍,可以在
https://github.com/LMAX-Exchange/disruptor/releases 下载最新的JAR包开始disruptor之旅吧。

阅读更多

好技术与坏项目

孤立系统的一切自发过程均向着令其状态更无序的方向发展,如果要使系统恢复到原先的有序状态是不可能的,除非外界对它做功。

程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手做成了烂项目,有些是从里到外的烂,有些是表面光鲜等你深入进去发现是个“焦油坑”,有些是此时还没烂但是已经出现问题征兆走在了腐烂的路上。

那些不认命的选择与之抗争,但是地上并没有路,当于是人们做出了各自不同的判断和尝试:

阅读更多

Java线程池实现原理

1. 什么是线程池

线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如Tomcat, MySQL等等。

线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。

这里描述的线程池是JDK 1.8中提供的ThreadPoolExecutor类。

阅读更多

面向数据的架构

面向数据的架构(Data-Oriented Architecture)由 Rajive Joshi在RTI 的2007 年白皮书中首次提出,而维也纳大学(University of Vienna)的Christian Vorhemus 和Erich Schikuta 在2017 年的 iiWAS 论文中又再次对其进行了描述。 DOA 是对传统二分法的颠覆,它介于单体架构和微服务(Microservices)、面向服务的架构(Service-Oriented Architecture)之间。单体架构由一个单体二进制文件(binary)和数据存储组成;微服务、面向服务的架构由许多小型的、分布式的、独立的二进制文件组成,并且每个二进制文件都有自己的数据存储。在面向数据的架构中,单体数据存储是系统中状态的唯一来源,并由松耦合无状态的微服务对其进行操作。

阅读更多

框架及模块开发常用的SPI

1.什么是SPI

SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。

2.SPI和API的使用场景

API (Application Programming Interface)在大多数情况下,都是实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。 从使用人员上来说,API 直接被应用开发人员使用。

SPI (Service Provider Interface)调用方来制定接口规范,提供给外部来实现,调用方在调用时则选择自己需要的外部实现。  从使用人员上来说,SPI 被框架扩展人员使用。

阅读更多

下一个机会在哪里?

移动互联网过后,下一个机会点在哪里?

上一个大的机会是2008年苹果发布iPhone 3G后的移动互联网大潮。作为移动终端(手机)的上游控制者,苹果(iOS)和Google(Android)吃尽了这个时代的红利。

2008到2018的十年,涌现了海量的移动互联网红利机会。无论是吃喝玩乐(美团,点评,Yelp),娱乐(抖音快手),消费(手淘,拼多多),社交通讯(Facebook,微信)。早期进入移动互联的人,都尝到了这个时代的红利。

阅读更多

Redis的高可用机制:哨兵和集群

我们在讨论分布式系统的时候,曾经谈过分布式系统要解决的是高并发、大数量和快速响应的问题。事实上,在互联网中,大部分的业务还是以查询数据为主,而非更改数据为主。在互联网出现高并发的时刻,查询关系数据库,会造成关系数据库的压力增大,容易导致系统宕机的严重后果。为了解决这个问题,一些开发者提出了数据缓存技术,数据缓存和关系数据库最大的不同在于,缓存的数据是保存在计算机内存上的,而关系数据库的数据主要保存在磁盘上。计算机检索内存的速度是远超过检索磁盘的,所以缓存技术可以在很大程度上提高整个系统的性能,降低数据库的压力。

使用缓存技术最大的问题是数据的一致性问题,缓存中存储的数据是关系数据库中数据的副本,因为缓存机制与数据库机制不同,所以它们的数据未必是同步的。虽然我们可以使用弱一致性去同步数据,但是现实很少会那么做,因为在互联网系统中,往往查询是可以允许部分数据不实时的,甚至是失真的,例如,一件商品的真实库存是100件,而现在显示是99件,这并不会妨碍用户继续购买。如果使用弱一致性,一方面会造成性能损失,另外一方面也会造成开发者工作量的大量增加。

阅读更多

Apache Ignite那点事

Ignite是什么?

Apache Ignite为开发人员提供了实时处理大数据和内存计算的方便易用的解决方案。主要有以下几点功能:

  1. Data grid 数据网格
  2. Compute grid 计算网格
  3. Service grid 服务网格
  4. Bigdata accelerator 大数据加数器
  5. Streaming grid 数据流网格

Apache Ignite核心技术特点如下:

  1. 开源
  2. 纯Java编写
  3. 基于Spring框架
  4. 支持.Net、C++和PHP语言

阅读更多

IoT项目的9个顶级开源物联网平台

物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术。 我们收集了一些最有名的物联网平台,以帮助您开发物联网项目。

在这里,推荐一些最好的和着名的开源物联网(IoT)平台。 大多数这些平台都提供API来支持Linux开发板,如Raspberry Pi,Arduino和BeagleBone。

Kaa IoT Platform

https://www.kaaproject.org/

用于开发IoT项目的9个顶级开源物联网平台

阅读更多

Gartner:首份机器人流程自动化(RPA)魔力象限

作者:Derek Miers、Marc Kerremans、Saikat Ray和 Cathy Tornbohm

随着企业组织想方设法提高运营效率,并将遗留系统与新的企业应用软件和数字化业务集成,机器人流程自动化(RPA)继续扩大其应用范围。我们在本文中研究这些市场力量和提供此类软件的领先企业供应商。

市场定义/描述

机器人流程自动化(RPA)是一种数字化赋能技术,主要充分利用用户界面(UI)和表面级特征这对组合来创建自动处理常规性、可预测的数据转录工作的脚本。

RPA工具可将应用软件连接起来,消除输入错误,加快流程,并降低成本。RPA市场仍然比较小,2018年总收入略低于8.5亿美元。然而,RPA是Gartner正式跟踪分析的增长速度最快的软件领域,2018年同比增长超过63%。

阅读更多

线程上下文在全链路跟踪上的运用

ThreadLocal是JDK默认提供的本地线程变量,用来存储在整个调用链中都需要访问的数据,并且是线程安全的。由于本文的写作背景是笔者需要在公司落地全链路跟踪平台,一个基本并核心的功能需求是用户的每个操作动作需要在整个调用链中进行埋点传递,线程上下文环境成为解决这个问题最合适的技术。

ThreadLocal解决什么问题?

ThreadLocal是在Thread类之外实现的一个功能(java.lang.ThreadLocal), 但它会为每个线程分别存储一份唯一的数据。正如它的名字所说的,它为线程提供了本地存储,也就是说你所创建出来变量对每个线程实例来说都是唯一的。和线程 名,线程优先级类似,你可以自定义出一些属性,就好像它们是存储在Thread线程内部一样。

阅读更多

gRPC原理

RPC 框架原理

RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。

阅读更多

DDD and CQRS Landing

这篇文章假设你已经初步了解过领域驱动设计(DDD)的基本概念(聚合根、实体、值对象、领域服务、领域事件、资源库、限界上下文等)以及CQRS的设计,这里将重点放在如何落地DDD和CQRS上。

DDD分层架构

Evans在它的《领域驱动设计:软件核心复杂性应对之道》书中推荐采用分层架构去实现领域驱动设计:

Token认证的来龙去脉

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位不久前,我在在前后端分离实践中提到了基于 Token 的认证,现在我们稍稍深入一些。通常情况下,我们在讨论某个技术的时候,都是从问题开始。那么第一个问题:

为什么要用 Token?

而要回答这个问题很简单——因为它能解决问题!可以解决哪些问题呢?

  1. Token 完全由应用管理,所以它可以避开同源策略
  2. Token 可以避免 CSRF 攻击
  3. Token 可以是无状态的,可以在多个服务间共享

阅读更多