RuleEngine

技术架构的战略和战术原则

风流意气都作罢 提交于 2020-12-04 23:56:26
作者丨胡斌 策划丨小智 技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 1.1 合适原则 技术人员有一种很强的技术情怀,就是在做设计的过程中,很希望挑战新的技术、在项目中采用最新的框架、或者自己重造一个比业界的还要牛的轮子。这样才能够显示出自己的优秀,以至于不让自己显的那么平庸。比如

技术架构的战略和战术原则

大城市里の小女人 提交于 2020-10-24 21:07:32
作者丨胡斌 策划丨小智 技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 1.1 合适原则 技术人员有一种很强的技术情怀,就是在做设计的过程中,很希望挑战新的技术、在项目中采用最新的框架、或者自己重造一个比业界的还要牛的轮子。这样才能够显示出自己的优秀,以至于不让自己显的那么平庸。比如

新鲜开源:基于Prometheus的企业监控平台设计与实现

為{幸葍}努か 提交于 2020-08-17 05:22:07
本文根据刘恒滔老师在〖deeplus直播第224期〗线上分享演讲内容整理而成。 (文末有获取本期PPT&回放的方式,不要错过) 大家好,今天跟大家分享的是我们360基于Prometheus开发的监控平台,名字叫“哆啦A梦”,目前已经在GitHub上开源了,这次我主要会分享以下这些内容: Prometheus在360搜索云平台的应用及Alertmanager的痛点 哆啦A梦的设计思路 哆啦A梦的功能介绍 哆啦A梦的快速部署 报警恢复聚合方案 标签匹配筛选 一、Prometheus的应用及Alertmanager的痛点 我们360搜索事业部云平台的Prometheus全部使用容器部署,采用联邦架构,容器监控指标和物理机监控指标全部使用Prometheus进行采集。在使用过程中,我们发现Prometheus自带的报警模块Alertmanager有些地方不是很完善,使用起来不够灵活,具体如下: 无法动态加载监控规则,需要修改配置文件; 使用Alertmanager时,需要修改Prometheus的配置文件将Alertmanager与Prometheus相关联; 无法实现报警升级,不支持获取动态值班组,标签匹配不能动态配置(需要修改配置文件)。 总而言之就是,配置不够方便灵活,需要频繁修改配置文件,学习成本高。 二、哆啦A梦的设计思路 针对上述这些问题,我们开发并开源了哆啦A梦报警平台

规则引擎对比

做~自己de王妃 提交于 2020-07-28 03:33:08
规则引擎概览 - 蜗牛伊的个人空间 - OSCHINA https://my.oschina.net/woniuyi/blog/3119383 RuleEngine--一款使用简单,入门方便的数据库规则引擎_Rewen的专栏-CSDN博客_rulesengine https://blog.csdn.net/Rewen/article/details/79387493 [Drools]JAVA规则引擎--Drools_quzishen的专栏-CSDN博客_drools规则引擎 https://blog.csdn.net/quzishen/article/details/6163012 SpringBoot入门建站全系列(三十四)使用Drools规则引擎做排班系统 https://www.pomit.cn/p/2486115243215361#1010301 使用java规则引擎Drools自动排班前言 - 豆丁网 http://cncc.bingj.com/cache.aspx?q=规则引擎+排班表&d=4707872757321488&mkt=en-US&setlang=en-US&w=0G9kORHgvS9c5O4tgqaerbMnEpO65nxK 考勤规则设置 · GitBook https://www.fxiaoke.com/mob/guide/fxiaoxie/src

java如何消除太多的if else判断?

大憨熊 提交于 2020-05-01 14:37:41
1.简介 if判断语句是很多编程语言的重要组成部分。但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护。 让我们看看能否使用别的方式来做呢。 设计模式是为了更好的代码重用性,可读性,可靠性,可维护性,它有六大原则       1)单一职责原则(Single Responsibility Principle,简称SRP):该原则是针对类来说的,即一个类应该只负责一项职责.       2)开放--封闭原则(The Open-Closed Principle简称OCP):是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。       3)依赖倒转原则(Dependence Inversion Principle :针对接口编程,不要对实现编程       4)里氏代换原则(Liskov Substitution Principle,简称LSP):里氏代换原则,子类型必须能够替换掉他们的父类型       5)迪米特法则(Law of Demeter):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用       6)合成/聚合复用原则(Composition/Aggregation Principle],简称CARP):尽量使用合成/聚合,尽量不使用类继承。合成聚合是“has a”的关系,而继承是“is a”的关系。 2.示例

maven assembly 打包 mian

孤者浪人 提交于 2020-03-04 10:13:14
pom.xml如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.drools</groupId> <artifactId>drools</artifactId> <version>7.24.0.Final</version> </parent> <groupId>com.topnet</groupId> <artifactId>drools-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin<

商业化服务端的SSP广告引擎

半城伤御伤魂 提交于 2019-12-04 20:31:32
商业化服务端的SSP广告引擎 当今互联网有几种主流的商业模式:广告、游戏、增值服务等。毫无疑问“广告推送”带给互联网公司的收入绝对是相当可观。今天小主就为大家分享一篇来自360手机卫士团队分享的SSP广告引擎,这么高质量的内部干货不拿出来分享实在对不起大家。 PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦! 一、概述 当今互联网有几种主流的商业模式:广告、游戏、增值服务等。今天我想谈一谈广告系统中的SSP引擎。SSP(全称:Sell-Side Platform)是一个媒体服务平台,该平台通过人群定向技术,智能的管理媒体广告位库存、优化广告的投放,助网络媒体实现其广告资源优化,提高其广告资源价值,达到帮助媒体提高收益的目的(以上摘自360百科)。大白话就是: 各种端(app端)找SSP要广告, SSP选出一批广告, 并告诉这些端,按照某些样式展示。SSP负责如何去选广告, 以及相应的样式是什么样子。SSP不断优化选择广告和确定样式的策略,让各个产品能赚到更多的钱。 一个好的SSP系统应该具备那些能力? 我总结了五点,列在下面: 灵活扩展能力 快速接入各种广告源 快速接入各个产品 快速验证广告的不同样式 快速调整广告页面布局 快速调整广告策略 2. 高性能、高并发能力 3. 高效发布和在线灰度能力 4. 快速调试定位错误能力 5.

maven-shade-plugin

我怕爱的太早我们不能终老 提交于 2019-11-30 07:33:53
最近,用规则引擎(drools)的封装了一个jar包,给别人使用。用的是maven-assembly-plugin打的包,可以把多个jar包里的class 给打成一个jar,感觉还是满好用的,但是打包成功后,发现报空指针错误, SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NullPointerException at org.kie.internal.utils.KieHelper.<init>(KieHelper.java:43) at com.topnet.ruleengine.RuleCall.geKieSession(RuleCall.java:145) at com.topnet.ruleengine.RuleCall.call(RuleCall.java:43) at M.main(M.java:17) 感觉少打哪个个东西了

EMQ X 规则引擎系列(五)存储消息到 Cassandra 数据库

只谈情不闲聊 提交于 2019-11-29 04:33:59
Cassandra 介绍与安装 Cassandra 是来自 Apache 的开源分布式数据库系统,它能在支持 线性扩展 、 高可用 的特性下,不损失原有的读写性能。目前广泛运用于各个大企业的后端服务中,例如 Netflix、Apple 等已部署上千个节点。 Cassandra 的安装参考: http://cassandra.apache.org/doc/latest/getting_started/installing.html 原理概览 通过配置规则引擎,EMQ X 可将指定主题下满足某条件的消息存储到 Cassandra 数据库。其消息流向简图如下: 其中: PUB/SUB:为 EMQ X 中的发布订阅处理逻辑。 Rule:IoT 消息规则,提取、筛选、转换消息报文中的数据。 Action: 为具体执行的动作。例如存数据库、写 Kafka 等。 场景介绍 为说明规则引擎在 Cassandra 数据库下的使用方式,我们以 将发动机转速超过 8000 的车辆状态存入 Cassandra 中 为例。 假设车辆上报状态信息如下: 上报主题:cmd/state/:id,主题中 id 代表车辆客户端识别码 消息体: { "id": "NXP-058659730253-963945118132721-22", // 客户端识别码 "speed": 32.12, // 车辆速度

商业化服务端的SSP广告引擎

左心房为你撑大大i 提交于 2019-11-26 09:28:48
商业化服务端的SSP广告引擎 当今互联网有几种主流的商业模式:广告、游戏、增值服务等。毫无疑问“广告推送”带给互联网公司的收入绝对是相当可观。今天小主就为大家分享一篇来自360手机卫士团队分享的SSP广告引擎,这么高质量的内部干货不拿出来分享实在对不起大家。 PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦! 一、概述 当今互联网有几种主流的商业模式:广告、游戏、增值服务等。今天我想谈一谈广告系统中的SSP引擎。SSP(全称:Sell-Side Platform)是一个媒体服务平台,该平台通过人群定向技术,智能的管理媒体广告位库存、优化广告的投放,助网络媒体实现其广告资源优化,提高其广告资源价值,达到帮助媒体提高收益的目的(以上摘自360百科)。大白话就是: 各种端(app端)找SSP要广告, SSP选出一批广告, 并告诉这些端,按照某些样式展示。SSP负责如何去选广告, 以及相应的样式是什么样子。SSP不断优化选择广告和确定样式的策略,让各个产品能赚到更多的钱。 一个好的SSP系统应该具备那些能力? 我总结了五点,列在下面: 灵活扩展能力 快速接入各种广告源 快速接入各个产品 快速验证广告的不同样式 快速调整广告页面布局 快速调整广告策略 2. 高性能、高并发能力 3. 高效发布和在线灰度能力 4. 快速调试定位错误能力 5.