datawire / bakerstreet Goto Github PK
View Code? Open in Web Editor NEWBaker Street is a HAProxy based routing engine for microservice architectures
Home Page: http://bakerstreet.io
License: Apache License 2.0
Baker Street is a HAProxy based routing engine for microservice architectures
Home Page: http://bakerstreet.io
License: Apache License 2.0
One query, I don't understand what the deployment architecture would look like if your services were all deployed in containers, and how you would go about releasing new versions of services alongside old ones in this model.
I'm having a hard time visualising how the container model works in practice and where the service and client nodes are configured - e.g. a specific example of how it works if you have two services (A -> B) in containers talking to each other and you want to canary release B.
Docker (and its cousins) do cool stuff like add link information to a containers environment variables, for example, if you specify a --link mysql:db' in the
run` command you will be given that information in the container such that it can be retrieved via an environment variable like $DB_PORT_3306_TCP_ADDR.
This feature would expose a configuration file syntax similar to Ruby On Rails <%= ENV[''] => configuration string that will automatically query the environment variables if present rather than rely on a hard coded value.
The title of the Baker Street doc index page is " - Baker vX.Y documentation". We should either omit the first portion of the title or use a descriptive word.
I'm just setting this up, so forgive me if I've missed something. I've setup a test service that returns an location lookup for an ip service.
[Watson]
; service_name must uniquely identify your service
service_url: http://ips.foobar.com:8001
liveness_url: http://ips.foobar.com:8001/livecheck
period: 3 ; seconds between liveness checks
; logging level (default in datawire.conf) may be DEBUG, INFO, WARNING, ERROR, or CRITICAL
;logging: WARNING
I would normally request to this server at http://ips.foobar.com:8001/8.8.8.8 and get something like
{"country":"US","country_full":"United States","division":"California","city":"Mountain View","lat":37.386,"log":-122.0838,"tz":"America/Los_Angeles"}
I get a 503 error message with the above config, If I add a "name" to the url
http://ips.foobar.com:8001/iplookup
Then I can call it successfully like so:
http://localhost:8000/iplookup
The application returns an error because that subfolder is being passed, is that the correct understanding?
Any way to define a "name" without making it part of the micro service url? Seems like a odd limitation, perhaps I'm missing something?
Make it clear that the JDK and maven are only requirements of the sample test service. The current text "simple service" is unclear; it can easily be taken to apply to Baker Street.
Because Watson is a sibling process to the service process it is incapable of properly checking that connectivity can be established between a remote client and the service. For example, Watson will dutifully report that a service is working but in a situation where an inbound port is closed due to misconfiguration then client traffic will be rejected regardless. Therefore, we need connectivity checking which is checking that will occur from a client to the remote service. In a situation where the remote service is unavailable from the client then traffic will not be routed to that service.
One promising solution which we should explore is to use HAProxy and it's built in health checking facilities from the client side. This is how SmartStack solves this problem.
The LICENSE file says the project is under the Apache Public License, however files headers tell a different story:
# Copyright (C) k736, inc. All Rights Reserved.
# Unauthorized copying or redistribution of this file is strictly prohibited.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.