degrade_service.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. var app = angular.module('sentinelDashboardApp');
  2. app.service('DegradeService', ['$http', function ($http) {
  3. this.queryMachineRules = function (app, ip, port) {
  4. var param = {
  5. app: app,
  6. ip: ip,
  7. port: port
  8. };
  9. return $http({
  10. url: 'degrade/rules.json',
  11. params: param,
  12. method: 'GET'
  13. });
  14. };
  15. this.newRule = function (rule) {
  16. return $http({
  17. url: '/degrade/rule',
  18. data: rule,
  19. method: 'POST'
  20. });
  21. };
  22. this.saveRule = function (rule) {
  23. var param = {
  24. id: rule.id,
  25. resource: rule.resource,
  26. limitApp: rule.limitApp,
  27. grade: rule.grade,
  28. count: rule.count,
  29. timeWindow: rule.timeWindow,
  30. statIntervalMs: rule.statIntervalMs,
  31. minRequestAmount: rule.minRequestAmount,
  32. slowRatioThreshold: rule.slowRatioThreshold,
  33. };
  34. return $http({
  35. url: '/degrade/rule/' + rule.id,
  36. data: param,
  37. method: 'PUT'
  38. });
  39. };
  40. this.deleteRule = function (rule) {
  41. return $http({
  42. url: '/degrade/rule/' + rule.id,
  43. method: 'DELETE'
  44. });
  45. };
  46. this.checkRuleValid = function (rule) {
  47. if (rule.resource === undefined || rule.resource === '') {
  48. alert('资源名称不能为空');
  49. return false;
  50. }
  51. if (rule.grade === undefined || rule.grade < 0) {
  52. alert('未知的降级策略');
  53. return false;
  54. }
  55. if (rule.count === undefined || rule.count === '' || rule.count < 0) {
  56. alert('降级阈值不能为空或小于 0');
  57. return false;
  58. }
  59. if (rule.timeWindow == undefined || rule.timeWindow === '' || rule.timeWindow <= 0) {
  60. alert('熔断时长必须大于 0s');
  61. return false;
  62. }
  63. if (rule.minRequestAmount == undefined || rule.minRequestAmount <= 0) {
  64. alert('最小请求数目需大于 0');
  65. return false;
  66. }
  67. if (rule.statIntervalMs == undefined || rule.statIntervalMs <= 0) {
  68. alert('统计窗口时长需大于 0s');
  69. return false;
  70. }
  71. if (rule.statIntervalMs !== undefined && rule.statIntervalMs > 60 * 1000 * 2) {
  72. alert('统计窗口时长最大 120s');
  73. return false;
  74. }
  75. // 异常比率类型.
  76. if (rule.grade == 1 && rule.count > 1) {
  77. alert('异常比率超出范围:[0.0 - 1.0]');
  78. return false;
  79. }
  80. if (rule.grade == 0) {
  81. if (rule.slowRatioThreshold == undefined) {
  82. alert('慢调用比率不能为空');
  83. return false;
  84. }
  85. if (rule.slowRatioThreshold < 0 || rule.slowRatioThreshold > 1) {
  86. alert('慢调用比率超出范围:[0.0 - 1.0]');
  87. return false;
  88. }
  89. }
  90. return true;
  91. };
  92. }]);