This is a short introduction post about Gilliam, a platform for micro services architecture systems.
Gilliam draws a lot of inspiration from Heroku. The idea is that Gilliam should be to your service ecosystem what Heroku is to your web apps.
| /* | |
| File Setup.jsx v3 | |
| Copyright (C) 2017, 2018 Johan Rydberg. All Rights Reserved. | |
| A Photoshop Script to automate the file setup described in | |
| "Commercial Retouching Workflow with Sef McCullough" from RGG EDU. | |
| It expects you to have paths set up for your parts. If one of the paths is | |
| called "SILO" then that will be used as group mask for all other masks. |
| [[(1397612319, 21), (1397621859, 23), (1397658009, 25), (1397659201, 27), (1397661879, 68), (1397665377, 70), (1397668892, 74), (1397688176, 81), (1397702320, 88), (1397772427, 95), (1397774079, 102), (1397769414, 143), (1397839220, 151), (1397855248, 177), (1397856181, 180), (1397864504, 182), (1397877663, 223), (1397946910, 225), (1397947620, 228), (1397958176, 230), (1397959410, 235), (1398018506, 237), (1398073253, 240), (1398085809, 242), (1398086110, 244), (1398090918, 246), (1398092760, 248), (1398094918, 250), (1398095011, 253), (1398095602, 258), (1398095635, 260), (1398097942, 266), (1398098907, 268), (1398098944, 270), (1398098966, 272), (1398100299, 275), (1398102287, 279), (1398102521, 283), (1398128458, 292), (1398133646, 301), (1398145646, 304), (1397926906, 306), (1398174254, 308), (1398194460, 330), (1398189786, 331), (1398251626, 333), (1398259979, 335), (1398263918, 344), (1398605864, 360), (1399434187, 362), (1400093588, 0)], [(1398887197, 1), (1398890026, 113), (1398890893, 114), (1398958 |
This is a short introduction post about Gilliam, a platform for micro services architecture systems.
Gilliam draws a lot of inspiration from Heroku. The idea is that Gilliam should be to your service ecosystem what Heroku is to your web apps.
Riemann is a quite simple but powerful monitoring system. In its core it is an event processing framework allowing a user to handle an incoming event stream. Events are small objects that originate from a host, that has a service and metric value associated with it. Events may also have tags and a free text description. This simple data structure enables an application transmit both exception tracebacks and application metric data using the same mechanism.
Riemann has a few problems though. First, it is a single-machine application, only allowing vertical scaling. Secondly, there's no redundancy or availability solution. In this post we'll try to address the first issue.
| class UnhandledExceptionError(Exception): | |
| """The exception could not be handled by the supervisor.""" | |
| class SupervisorKilledError(Exception): | |
| """The supervisor was killed.""" | |
| class SupervisorAbortedError(Exception): | |
| """The supervisor gave up after maximum number of failures.""" |
| """Functional-programming style sequences.""" | |
| import itertools | |
| import functools | |
| import operator as op | |
| class Blank(object): | |
| def __init__(self, pos=None): | |
| self.pos = pos |
| # Copyright 2012 Johan Rydberg. | |
| # Copyright 2001-2008 Twisted Matrix Laboratories. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software |
| # Small snippet that shows how to put a watchdog around a greenlet. | |
| # When the watchdog is triggered, a stacktrace of the greenlet is | |
| # printed. | |
| import gevent | |
| import traceback | |
| import sys | |
| def a(a=10): |
| %define _noarch_libdir /usr/lib | |
| %define rel_ver 0.7.0 | |
| Summary: A high-throughput distributed messaging system. | |
| Name: kafka | |
| Version: %{rel_ver} | |
| Release: 1 | |
| License: Apache License v2.0 | |
| Group: Applications/Databases |
| exports.AlreadyCalledError = class AlreadyCalledError | |
| exports.Failure = class Failure | |
| constructor: (@error) -> | |
| check: (errorType) -> | |
| if @error instanceof errorType | |
| @error | |
| else | |
| null |