线程安全问题
Thread代码如下,ThreadLocal.ThreadLocalMap threadLocals 这个为 Thread的属性
1 | public |
简单
Thread代码如下,ThreadLocal.ThreadLocalMap threadLocals 这个为 Thread的属性
1 | public |
在业务初期的场景中由于没有明确的模型概念导致代码中大量的持久层引用,这在业务简单的情况下是可以接受的,因为不能预测业务的趋势.随着业务的逐渐扩张,一个service中引入的dao会越来越多,可能多个service中会引用同一个dao,这样如果其中一个dao的表结构变更或者更新逻辑改变则会影响很多地方,导致开发人员在扩展功能的同时要照顾到老的代码引用该dao的地方,所以这时需要引入聚合的概念来清晰的划分出职责.
用于api资源保护
用于集成用户体系
不常用
功能最完整的授权模式,用于第三方登录,类似微博
consul适用场景ca 强一致性
eureka适用场景ap 可靠性
consul通过consul-template实现
eureka可以通过zuul的启动脚本+定时任务实现
consul重启后不自动加载已注册的服务
1 | # 适用于ApacheHttpClient,如果是okhttp无效。每个服务的http客户端连接池最大连接,默认是200. |
1 | # 注意Dalston.RELEASE版本的feign hystrix默认是开启状态的,如果有需要我们可以根据业务情况选择是否开启,开启后需要设置hystrix配置 |
RobotFramework是一个通用的测试自动化框架验收测试和验收测试驱动开发(ATDD)。它易于使用的表格测试数据的语法和使用关键字驱动的测试方法。它的测试功能可以使用测试库与Python或Java实现,用户可以创建新的更高层次的关键词使用相同的语法,从现有的用于创建测试用例
安装Ride的前置条件
下载页面: http://wxpython.org/download.php#stable。
在选择版本下载的时候要注意选择与 Python 版本对应的版本,并且选择 unicode 版本,比如版本:wxPython2.8-win32-unicode-py26.exe,否则安装完成后不能支持中文。
下载完成后,选择默认项进行安装即可。
简称RF,是基于python语言封装的一套自动化测试框架。
进入 Python 的安装路径,执行命令“pip install robotframework”或者通过下载页面 https://pypi.python.org/pypi/robotframework下载源码。
解压后,执行命令“python setup.py install”进行安装。进入 Python 的安装路径,执行命令“pip install robotframework”。
Ride是编辑器也就是测试人员编写case用的工具。
进入 Python 的安装路径,执行命令“pip install robotframework-ride”。
pip install robotframework-requests
pip install robotframework-httplibrary
pip install demjson
Wiki:http://robotframework.org/robotframework/latest/libraries/XML.html
pip install robotframework-databaselibrary
pip install PyMySQL
解决robotframework 3.0打印中文为unicode编码问题
http://www.robotframework.net/?/article/94
读取数据库时中文返回“??”时,注意在Connect To Database Using Custom Params的连接后加入charset=’utf8’
linux上中文兼容解决:
例子: Unexpected error: UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6 in position 977: ordinal not in range(128)
修改:
1 | /usr/lib/python2.7/site-packages/HttpLibrary/livetest.py |
加入:
1 | reload(sys) |
删除.pyc文件
Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。
命令操作和查询操作分开,当有命令操作时,正常执行业务逻辑后发个异步通知(观察者模型),然后对应的视图服务更新到订制的视图中(可以通过redis,mysql,es实现)
数据库中无update,只有insert,会存在数据量过大的问题,解决办法,快照
聚合根,对应聚合做持久化模型
1.考虑跨聚合引用最简
2.事件风暴
事物保证
结合事件源的方式,如果业务中新增展示功能,则只需要新加一个topic解决该问题
天然的读写分离
https://www.cnblogs.com/exceptioneye/p/4783904.html
漏桶算法强制一个常量的输出速率而不管输入数据流的突发性,当输入空闲时,该算法不执行任何动作.就像用一个底部开了个洞的漏桶接水一样,水进入到漏桶里,桶里的水通过下面的孔以固定的速率流出,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率.
令牌桶算法的基本过程如下:
每秒会有 r 个令牌放入桶中,或者说,每过 1/r 秒桶中增加一个令牌
桶中最多存放 b 个令牌,如果桶满了,新放入的令牌会被丢弃
当一个 n 字节的数据包到达时,消耗 n 个令牌,然后发送该数据包
如果桶中可用令牌小于 n,则该数据包将被缓存或丢弃
“漏桶算法”能够强行限制数据的传输速率,而“令牌桶算法”在能够限制数据的平均传输数据外,还允许某种程度的突发传输。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的上限,因此它适合于具有突发特性的流量。
RateLimiter
我们可以使用 Guava 的 RateLimiter 来实现基于令牌桶的流量控制。RateLimiter 令牌桶算法的单桶实现,RateLimiter 对简单的令牌桶算法做了一些工程上的优化,具体的实现是 SmoothBursty。需要注意的是,RateLimiter 的另一个实现 SmoothWarmingUp,就不是令牌桶了,而是漏桶算法。
SmoothBursty 有一个可以放 N 个时间窗口产生的令牌的桶,系统空闲的时候令牌就一直攒着,最好情况下可以扛 N 倍于限流值的高峰而不影响后续请求,就像三峡大坝一样能扛千年一遇的洪水.